Page d'accueil
Maplets
<< Page précédente
Page suivante >>
Motus
© Alain Le Stang - "Apprendre Maple" - 2005
Sélectionner Edit/Execute/Worksheet ou cliquer le bouton !!! pour
exécuter ce Maplet.
>
|
with(Maplets[Elements]):
with(Maplets[Examples]): with(Maplets[Tools]): with(plots):
with(plottools):
with(StringTools):
|
Chemin
à modifier
Les 12 fichiers suivants en liaison avec ce maplet doivent etre contenus dans
un seul repertoire (de nom par exemple ici
"C:\\Maple\\maplets\\motus\\" ) :
motus.mw motus.maplet motus.gif comptepts.gif grille.gif pref.txt
motsenclair5.txt motsenclair6.txt motsenclair7.txt top5.txt top6.txt top7.txt
>
|
chemin:="C:\\Maple\\maplets\\motus\\":
|
Procédures:
>
|
RAZ_Grilles:=proc()
global grid,gridcolor;
grid:=[["","","","","","",""],["","","","","","",""],["","","","","","",""],
["","","","","","",""],["","","","","","",""],["","","","","","",""],
["","","","","","",""]]:
gridcolor:=[["b","b","b","b","b","b","b"],["b","b","b","b","b","b","b"],["b","b","b","b","b","b","b"],
["b","b","b","b","b","b","b"],["b","b","b","b","b","b","b"],["b","b","b","b","b","b","b"],
["b","b","b","b","b","b","b"]]:
end proc:
|
>
|
Valider_Options :=proc()
global taille,niveau;
if Maplets:-Tools:-Get('RB1'('value')) then taille:=5 end if:
if Maplets:-Tools:-Get('RB2'('value')) then taille:=6 end if:
if Maplets:-Tools:-Get('RB3'('value')) then taille:=7 end if:
if Maplets:-Tools:-Get('RB4'('value')) then niveau:=1 end if:
if Maplets:-Tools:-Get('RB5'('value')) then niveau:=2 end if:
if Maplets:-Tools:-Get('RB6'('value')) then niveau:=3 end if:
Sauve_Options (): RAZ_Grilles():
Maplets:-Tools:-Set('Valider'('enabled')=false):
Maplets:-Tools:-Set('Defaut'('enabled')=false):
Maplets:-Tools:-Set('RB1'('enabled')=false):
Maplets:-Tools:-Set('RB2'('enabled')=false):
Maplets:-Tools:-Set('RB3'('enabled')=false):
Maplets:-Tools:-Set('RB4'('enabled')=false):
Maplets:-Tools:-Set('RB5'('enabled')=false):
Maplets:-Tools:-Set('RB6'('enabled')=false):
Maplets:-Tools:-Set('Commencer'('enabled')=true):
end proc:
|
>
|
Sauve_Options :=proc()
global pref,taille,niveau,m1,m2,m3;
local f;
f := fopen(pref,WRITE,TEXT);
fprintf(f, "%d\n%d\n",taille,niveau);
fprintf(f, "%d\n%d\n%d\n",m1[5],m2[5],m3[5]);
fprintf(f, "%d\n%d\n%d\n",m1[6],m2[6],m3[6]);
fprintf(f, "%d\n%d\n%d\n",m1[7],m2[7],m3[7]);
fclose(f)
end proc:
|
>
|
Lire_Options:=proc()
global taille,niveau,m1,m2,m3;
local f;
f := fopen(pref,READ):
taille := FileTools[Text][ReadInteger](f):
niveau := FileTools[Text][ReadInteger](f):
m1[5]:= FileTools[Text][ReadInteger](f):
m2[5]:= FileTools[Text][ReadInteger](f):
m3[5]:= FileTools[Text][ReadInteger](f):
m1[6]:= FileTools[Text][ReadInteger](f):
m2[6]:= FileTools[Text][ReadInteger](f):
m3[6]:= FileTools[Text][ReadInteger](f):
m1[7]:= FileTools[Text][ReadInteger](f):
m2[7]:= FileTools[Text][ReadInteger](f):
m3[7]:= FileTools[Text][ReadInteger](f):
fclose(f):
Maplets:-Tools:-Set('RB1'('value')=evalb(taille=5)):
Maplets:-Tools:-Set('RB2'('value')=evalb(taille=6)):
Maplets:-Tools:-Set('RB3'('value')=evalb(taille=7)):
Maplets:-Tools:-Set('RB4'('value')=evalb(niveau=1)):
Maplets:-Tools:-Set('RB5'('value')=evalb(niveau=2)):
Maplets:-Tools:-Set('RB6'('value')=evalb(niveau=3)):
majRB(taille);
meilleur_score(taille);
majscore();
end proc:
|
>
|
majRB:=proc(n::posint)
global m1,m2,m3;
Maplets:-Tools:-Set('RB4'('caption')=cat("Facile (",m1[n]," mots)")):
Maplets:-Tools:-Set('RB5'('caption')=cat("Moyen (",m2[n]," mots)")):
Maplets:-Tools:-Set('RB6'('caption')=cat("Difficile (",m3[n]," mots)")):
meilleur_score(n);
majscore();
end proc:
|
>
|
meilleur_score:=proc(n::posint)
global meilleur_joueur, meilleur;
local f;
f := fopen(fichscore[n],READ):
meilleur_joueur := FileTools[Text][ReadString](f):
meilleur := FileTools[Text][ReadInteger](f):
Maplets:-Tools:-Set('meilleurscore'('caption')= meilleur):
Maplets:-Tools:-Set('meilleurjoueur'('caption')= meilleur_joueur):
fclose(f)
end proc:
|
>
|
majscore:=proc()
global meilleur, total, nbmotstrouves, nbmots, meilleur_joueur;
Maplets:-Tools:-Set('score'('caption')=total):
Maplets:-Tools:-Set('trouves'('caption')=nbmotstrouves):
Maplets:-Tools:-Set('proposes'('caption')=nbmots):
if total > meilleur then meilleur := total: meilleur_joueur := "JOUEUR
ACTUEL": end if;
Maplets:-Tools:-Set('meilleurscore'('caption')=meilleur):
Maplets:-Tools:-Set('meilleurjoueur'('caption')=meilleur_joueur):
end proc:
|
>
|
OptionsParDefaut:=proc()
global taille,niveau;
Maplets:-Tools:-Set('RB1'('value')=true):
Maplets:-Tools:-Set('RB2'('value')=false):
Maplets:-Tools:-Set('RB3'('value')=false):
Maplets:-Tools:-Set('RB4'('value')=true):
Maplets:-Tools:-Set('RB5'('value')=false):
Maplets:-Tools:-Set('RB6'('value')=false):
taille:=5 : niveau:=1:
majRB(5);
end proc:
|
Dessin de la cellule de la position (ligne,colonne) dans la grille n
x n , avec une couleur RGB(a,b,c) a,b,c entre 0 et 1:
>
|
dessin:=proc(ligne::posint,colonne::posint,n::posint,a,b,c)
local x,y;
x:=colonne-1;y:=n-ligne;
polygon([[x,y],[colonne,y],[colonne,y+1],[x,y+1]],color=COLOR(RGB,a,b,c)):
end proc:
|
Dessin
de la grille de jeu:
>
|
trace_grille:=proc()
global taille,grid,gridcolor;
local l,c,d,p,t,r,g,b;
d:=NULL:
for l to taille do
for c to taille do
if gridcolor[c][l]="b" then r:=1:g:=1:b:=1
elif gridcolor[c][l]="o" then r:=1:g:=0.6:b:=0
elif gridcolor[c][l]="g" then r:=0.77:g:=0.77:b:=0.77
else r:=1:g:=1:b:=0
end if:
d:=d,dessin(c,l,taille,r,g,b)
end do
end do;
p:=polygon([[0.2,taille],[0.2,taille+0.2],[taille+0.2,taille+0.2],[taille+0.2,0.2],[taille,0.2],
[taille,taille],[0.2,taille]],color=COLOR(RGB,.5,.5,.5)):
t:=NULL:
for l to taille do
for c to taille do
t:=t,textplot([c-0.5,l-0.5,grid[taille-l+1][c]],font=[COURIER,
BOLD,24+5*(7-taille)])
end do
end do:
display([d,p,t],axes=NONE);
end proc:
|
>
|
init_motus:=proc()
global nbmots,ligne,motsaisi,mot,gagne,taille,bonne,fichalpha,m3,level,niveau,grid,gridcolor;
local i,f,hasard,line,T;
T["1"]:=1:T["2"]:=2:T["3"]:=3:
nbmots := nbmots + 1: majscore():
ligne := 1: motsaisi:= "": gagne := false:
for i to taille do bonne[i]:= " " end do;
f:=fichalpha[taille]:hasard:=rand(m3[taille]):level:=4:
randomize():
while level>niveau do
i:=hasard()*13 :filepos(f,i):line:=readline(f):
mot:=substring(line,2..2+taille-1): # print(mot):
level:=T[substring(line,11)]
end do:
fclose(f):
RAZ_Grilles():
grid[1][1]:=substring(mot,1):
gridcolor[1][1]:="o":
Maplets:-Tools:-Set('Grille'=trace_grille()):
end proc:
|
>
|
ProposeMot:=proc()
global grid,gridcolor,bonne,ligne,taille,fin,mot,motsaisi,nbmots,nbmotstrouves;
local k,t;
t:=Maplets:-Tools:-Get('Saisie'('value')):
Maplets:-Tools:-Set('Saisie'('value')=UpperCase(t)):
motsaisi:=UpperCase(t);
if not fin then
analyse(motsaisi,mot);
if gagne then
nbmotstrouves := 1 + nbmotstrouves: majscore():
Maplets:-Tools:-Set('Saisie'('value')=""): motsaisi:="":
if nbmots=10 then
Alert(cat("Vous avez trouvé le mot """,mot,""".\n Fin de
partie."),title="Bravo!"):
FinPartie();
else
Alert(cat("Vous avez trouvé le mot """,mot,""".\n Jouez un
autre mot."),title="Bravo!"):
init_motus();
end if;
else # mot non trouvé
if ligne < taille then
ligne := ligne + 1:
for k from 0 to taille - 1 do
if bonne[k + 1] <> " " then
grid[ligne][k+1]:=bonne[k + 1]
end if
end do:
Maplets:-Tools:-Set('Saisie'('value')=""): motsaisi:=""
else # ligne=taille
if nbmots = 10 then
Alert(cat("Vous n'avez pas trouvé le mot """,mot,""".\n
Fin de partie."),title="Désolé!"):
FinPartie();
else
Alert(cat("Vous n'avez pas trouvé le mot """,mot,""".\n
Jouez un autre mot."),title="Désolé!"):
init_motus()
end if;
Maplets:-Tools:-Set('Saisie'('value')=""): motsaisi:="":
end if;
end if;
end if
end proc:
|
>
|
analyse:=proc(x::string,
m::string)
global gagne,ligne,level,total,bonne,taille,motsaisi,fin,grid,gridcolor;
local drapeaux,Flag,k,c;
drapeaux:=proc(x::string, m::string)
local k,l,X,M,R:
X:=convert(x,list); M:=convert(m,list);
R:=[-1$nops(M)];
for k to nops(X) do
if X[k]=M[k] then R[k]:=2: M[k]:=" ": X[k]:=" " fi
od;
for k to nops(X) do
if not member(X[k],M) then R[k]:=0: X[k]:=" " fi
od;
for k to nops(X) do
for l to nops(M) do
if X[k]<>" " and X[k]=M[l] then R[k]:=1: X[k]:=" ": M[l]:=" " fi
od;
od;
for k to nops(R) do
if R[k]=-1 then R[k]:=0 fi
od;
R
end proc:
if length(x)<>taille then
Alert(cat("Le mot proposé, """,motsaisi,""", n'a pas ",taille," lettres."),title="Mot
erroné"):
return(NULL) end if;
for k to taille do
if not member(substring(x,k),["A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T",
"U","V","W","X","Y","Z"]) then
Alert(cat("Le mot proposé, """,motsaisi,""", comprend un caractère non
autorisé."),title="Mot erroné"):return(NULL) end if;
end do;
if trouve(x,taille) < 0 then
Alert(cat("Le mot proposé, """,motsaisi,""", n'est pas dans le
dictionnaire.\n Vous devez jouer un autre mot."),title="Mot erroné"):return(NULL)
end if;
Flag:=drapeaux(x,m);
for k to length(x) do
c := substring(x,k):
if fin then
x:="": return(x)
end if;
if Flag[k]=2 then
if bonne[k] = " " then
bonne[k] := c: total := total + 2: majscore()
end if;
grid[ligne][k]:=c: gridcolor[ligne][k]:="o"
elif Flag[k]=1 then
grid[ligne][k]:=c: gridcolor[ligne][k]:="j":
total := total + 1: majscore()
else # Flag[k]=0
grid[ligne][k]:=c:
end if;
end do;
if x = m then
gagne := true:
total := total + (taille + 1 - ligne) * 5 + (level - 1) * 3: majscore()
end if;
Maplets:-Tools:-Set('Grille'=trace_grille()):
Maplets:-Tools:-Set('Saisie'('enabled')=true):
end proc:
|
>
|
trouve:=proc(x::string,
n::posint)
global m3,fichalpha;
local r,xi,xj,f,i,j,k,line;
f:=fichalpha[n]:
i:=0: j:=m3[n]:
while j - i > 1 do
k:= floor((i+j)/2):filepos(f,k*13):line:=readline(f):
if LexOrder(substring(line,2..2+taille-1),x)=-1 then i:=k else j:=k end
if
end do;
filepos(f,i*13): line:=readline(f): xi:=substring(line,2..2+taille-1):
filepos(f,j*13): line:=readline(f): xj:=substring(line,2..2+taille-1):
if x=xi then r:= i:
elif x=xj then r:=j:
else r:= -i end if;
fclose(f);
r
end proc:
|
>
|
FinPartie:=proc()
global fin;
fin:=true : Top10(); majscore();
Maplets:-Tools:-Set('Valider'('enabled')=true):
Maplets:-Tools:-Set('Defaut'('enabled')=true):
Maplets:-Tools:-Set('Dictionnaire'('enabled')=true):
Maplets:-Tools:-Set('Scores'('enabled')=true):
Maplets:-Tools:-Set('RB1'('enabled')=true):
Maplets:-Tools:-Set('RB2'('enabled')=true):
Maplets:-Tools:-Set('RB3'('enabled')=true):
Maplets:-Tools:-Set('RB4'('enabled')=true):
Maplets:-Tools:-Set('RB5'('enabled')=true):
Maplets:-Tools:-Set('RB6'('enabled')=true):
Maplets:-Tools:-Set('Proposer'('enabled')=false):
Maplets:-Tools:-Set('Saisie'('enabled')=false):
end proc:
|
>
|
commencer_jeu:=proc()
global fin, nbmots, nbmotstrouves, total;
fin:=false: nbmots := 0: nbmotstrouves := 0: total := 0:
Maplets:-Tools:-Set('Dictionnaire'('enabled')=false):
Maplets:-Tools:-Set('Scores'('enabled')=false):
Maplets:-Tools:-Set('Proposer'('enabled')=true):
Maplets:-Tools:-Set('Saisie'('enabled')=true):
Maplets:-Tools:-Set('Commencer'('enabled') = false):
init_motus()
end proc:
|
----------------------------- DicoMaplet ( Fenetre
"Dictionnaire" ) ---------------------------------
>
|
Dict:=proc()
Maplets[Display] (DicoMaplet);
Sauve_Options() : Lire_Options()
end proc:
|
>
|
majElements:=proc(n::posint)
global m3,opt;
Maplets:-Tools:-Set('nblettres'('caption')=cat("des mots de ",n,"
lettres")):
Maplets:-Tools:-Set('Mess1'('caption')=cat(convert(m3[n],string)," mots")):
Maplets:-Tools:-Set('Mess3'('caption')=" "):
Efface1() : Efface2(): Efface3()
end proc:
|
>
|
majAffich:=proc(n::posint)
global m3,lev1,lev2,opt;
lev1:=4 : lev2:=1 : opt:=n:
if n=5 then Maplets:-Tools:-Set('RBD1'('value')=true)
elif n=6 then Maplets:-Tools:-Set('RBD2'('value')=true)
else Maplets:-Tools:-Set('RBD3'('value')=true) end if;
Maplets:-Tools:-Set('RBD7'('value')=true); Maplets:-Tools:-Set('RBD8'('value')=true);
Maplets:-Tools:-Set('SL1'('upper')=m3[n]): Maplets:-Tools:-Set('SL2'('upper')=m3[n]):
Maplets:-Tools:-Set('SL1'('value')=m3[n]): Maplets:-Tools:-Set('SL2'('value')=m3[n]):
majElements(n):
end proc:
|
>
|
afficheMots:=proc(dep)
global m3,opt,qual;
local d,k,m,L;
d := abs(dep):
if d>=m3[opt]-20 then d:=m3[opt] - 22 end if;
L:=NULL:
for k from 0 to 21 do
m:= trouveMot(opt, d + k): L:=L,cat(m[1],qual[m[2]])
end do:
Maplets:-Tools:-Set('LB1'('itemlist')=[L]):
if d < m3[opt] - 21 then Maplets:-Tools:-Set('SL1'('value') = min(m3[opt],m3[opt]-d+1))
else Maplets:-Tools:-Set('SL1'('value') = 1) end if;
end proc:
|
>
|
afficheMotsFiltres:=proc(dep)
global listefiltree;
local d,k,n,L;
d:=dep: n:=nops(listefiltree):
if d=0 then d:=1 end if;
if d>n-21 then d:=n-21 end if;
L:=listefiltree[d..d+21]:
Maplets:-Tools:-Set('LB2'('itemlist')=L):
if d<n-21 then Maplets:-Tools:-Set('SL2'('value') = min(n,n-d+1))
else Maplets:-Tools:-Set('SL2'('value') = 1) end if;
end proc:
|
>
|
RechercheMot:=proc()
global opt;
local a,s,t;
t := UpperCase(Maplets:-Tools:-Get('TFConsult'('value'))):
a := trouve(convertir(t),opt):
s := Maplets:-Tools:-Get('SL1'('upper')):
if abs(a) > s then a := s end if;
afficheMots(a)
end proc:
|
>
|
FiltreMot:=proc()
global opt,m3,qual,listefiltree;
local a,c,i,j,m,y,k,mot,T,nbmots,dep,arret,lettre,nb;
T["1"]:=1:T["2"]:=2:T["3"]:=3: listefiltree:=NULL :
y:=convertir(Maplets:-Tools:-Get('TFFiltre'('value'))): nb := 0 :
for k to opt do
if substring(y,k) <> " " then
nb := nb + 1 : lettre[nb] := k
end if
end do:
a := substring(y, 1):
if Ord(a)>=65 and Ord(a)<=89 then # lettre de "A" à "Y"
dep:= abs(trouve(cat(a," "),opt)):
arret:= abs(trouve(cat(Char(Ord(a) + 1)," "),opt))
elif Ord(a)=90 then # lettre "Z"
dep:= abs(trouve("Z ",opt)):
arret:= m3[opt]-1
else
dep:= 0: arret:= m3[opt]-1
end if;
nbmots := 0:
for j from dep to arret do
m:=trouveMot(opt, j):
if (lev1 < 4 and T[m[2]] = lev1) or (lev1 = 4) then
mot := m[1]: c := 0:
for i to nb do
if substring(mot, lettre[i]) = substring(y, lettre[i]) then c := c + 1
end if
end do:
if c = nb then
listefiltree:=listefiltree,cat(mot, qual[m[2]]):
nbmots := nbmots + 1:
Maplets:-Tools:-Set('Mess2'('caption') = cat(convert(nbmots,string), "
mots"))
end if
end if
end do:
if nops([listefiltree])<22 then
for i from nops([listefiltree])+1 to 22 do
listefiltree:=listefiltree," " end
do
end if;
listefiltree:=[listefiltree]:
Maplets:-Tools:-Set('SL2'('upper') = nops(listefiltree)):
afficheMotsFiltres(1):
end proc:
|
>
|
convertir:=proc(x)
local s,y,k;
y:= "":
for k to length(cat(x," ")) do
s:=substring(x,k):
if s="*" then y := cat(y, " ")
elif (Ord(s)>=65 and Ord(s)<=95) or (Ord(s)>=97 and Ord(s)<=122) then
y := cat(y,s)
else y := cat(y," ") end if;
end do:
ajouteEspaces(UpperCase(y))
end proc:
|
>
|
ajouteEspaces:=proc(x::string)
local i,y,z;
y:=cat(x," "): z:="":
for i to 7 do
z:=cat(z,substring(y,i))
end do:
z
end proc:
|
>
|
AjouteMot:=proc()
global opt,lev2;
local t;
t:=UpperCase(Maplets:-Tools:-Get('TFAjout'('value'))):
if length(t)=opt then
ajouter(ajouteEspaces(t), lev2)
else
Maplets:-Tools:-Set('Mess3'('caption')="Longueur incorrecte"):
end if
end proc:
|
>
|
ajouter:=proc(x::string,
n::posint)
global opt,m1,m2,m3,fichalpha;
local L,line,a,f,g,i,j,t,y,p;
y := convertir(UpperCase(x)):
for p to opt do
if Ord(substring(x,p)) < 65 or Ord(substring(x,p)) > 90 then
Maplets:-Tools:-Set('Mess3'('caption')="Mot incorrect"): return(NULL)
end if
end do:
t:= trouve(y,opt):
if t >= 0 then
Maplets:-Tools:-Set('Mess3'('caption')="Mot déjà présent"): return(NULL)
else
t:= abs(t): j:=m3[opt]-1:
Maplets:-Tools:-Set('Mess3'('caption')="Ajout du mot en cours..."):
if t <= 1 then
a := 1
elif t >= m3[opt] then
a := 1 + j
else
a := 1 + t
end if;
L:=cat("""",y,""",",convert(n,string),Char(13),Char(0)): f:=fichalpha[opt]:
for i from a to j do
filepos(f,i*13): line:=readline(f): L:=L,line
end do:
fclose(f):
L:=[L] :
g:=fopen(fichalpha[opt],APPEND):
for i from a to j+1 do
filepos(g,i*13): fprintf(g,"%s\n",convert(L[i-a+1],string)):
end do:
closef(g):
if n = 3 then m3[opt] := m3[opt] + 1 end if;
if n = 2 then
m2[opt] := m2[opt] + 1: m3[opt] := m3[opt] + 1
end if;
if n = 1 then
m1[opt] := m1[opt] + 1: m2[opt] := m2[opt] + 1: m3[opt] := m3[opt] +
1
end if;
Maplets:-Tools:-Set('SL1'('upper')= m3[opt] - 21):
Maplets:-Tools:-Set('Mess3'('caption')=""):
Maplets:-Tools:-Set('Mess1'('caption')=cat(convert(m3[opt],string),"
mots")):
end if
end proc:
|
>
|
trouveMot:=proc(n::posint,
index::integer)
global fichalpha,opt;
local f,line;
f:=fichalpha[n]:
filepos(f,index*13): line:=readline(f):
fclose(f);
[substring(line,2..2+opt-1),substring(line,11)]
end proc:
|
>
|
Efface1:=proc()
Maplets:-Tools:-Set('TFConsult'('value')=""):
afficheMots(0)
end proc:
|
>
|
Efface2:=proc()
local i,L;
Maplets:-Tools:-Set('TFFiltre'('value')=""):
L:=NULL:
for i from 0 to 21 do L:=L," " end do:
Maplets:-Tools:-Set('LB2'('itemlist')=[L]):
Maplets:-Tools:-Set('Mess2'('caption')="Aucun mot"):
end proc:
|
>
|
Efface3:=proc()
Maplets:-Tools:-Set('TFAjout'('value')=""):
end proc:
|
>
|
majListe1:=proc()
global opt,m3;
local t;
t:=Maplets:-Tools:-Get('SL1'('value')):
afficheMots(m3[opt]-t+1)
end proc:
|
>
|
majListe2:=proc()
global listefiltree;
local t;
t:=Maplets:-Tools:-Get('SL2'('value')):
afficheMotsFiltres(nops(listefiltree)-t+1)
end proc:
|
>
|
niv1:=proc(n)
global lev1;
lev1:=n
end proc:
|
>
|
niv2:=proc(n)
global lev2;
lev2:=n
end proc:
|
>
|
DicoMaplet := Maplet(
'onstartup' = 'demarrer',
Font['F1']('family'="TIMES", 'bold'='false', 'italic'='false', size=12),
Font['F2']('family'="TIMES", 'bold'='true', 'italic'='false', size=24),
ButtonGroup['GroupeD1'](), ButtonGroup['GroupeD2'](), ButtonGroup['GroupeD3'](),
Window['FenDico'](
'title' = "Dictionnaire", 'layout' = 'DicoLayout', 'width'=725, 'height'=550
),
Action['demarrer'](
Evaluate('function' ='majAffich(taille)'), RunWindow(FenDico)
),
BoxLayout['DicoLayout'](
BoxColumn(
BoxRow('inset'=0, 'spacing'=0,
Label(" ",'font'='F1'),Label(" ",'font'='F1'),Label("
",'font'='F1'),Label('image'=Image( cat(chemin,"motus.gif"))),
Label(" ",'font'='F1'),Label(" ",'font'='F1'),
RadioButton['RBD1']("5 lettres",'group'='GroupeD1','onclick'=Evaluate('function'
= 'majAffich(5)')),
RadioButton['RBD2']("6 lettres",'group'='GroupeD1','onclick'=Evaluate('function'
= 'majAffich(6)')),
RadioButton['RBD3']("7 lettres",'group'='GroupeD1','onclick'=Evaluate('function'
= 'majAffich(7)'))
),
BoxRow('inset'=0, 'spacing'=0,
GridLayout(
GridRow(
GridCell(
BoxColumn('inset'=0, 'spacing'=0, 'border'=true, 'caption'="Consulter -
Rechercher",
Label(" ",'font'=F1),
Label("Consultation ou recherche"),Label("dans le dictionnaire"),
Label['nblettres'](cat("des mots de ",taille," lettres")),
Label(" ",'font'=F1),Label(" ",'font'=F1),
Label(" ",'font'=F1), Label(" ",'font'=F1),
Label(" ",'font'='F1'),Label(" ",'font'='F1'),
Label("Entrez les premières"), Label("lettres du mot souhaité") ,
Label("puis cliquez ""Rechercher"":"),
Label(" ",'font'=F1),
TextField['TFConsult']('width'=12, 'enabled'=true) ,
Label(" ",'font'=F1),
Button['Effacer1']("Effacer",'onclick'= Evaluate( 'function'=
"Efface1")) ,
Label(" ",'font'=F1),
Button['Rechercher']("Rechercher",'onclick'= Evaluate( 'function'= "RechercheMot")),
Label(" ",'font'=F1),
Label['Mess1'](cat(convert(m3[taille],string)," mots"),'foreground'=blue),
Label(" ",'font'=F1)
)
),
GridCell(
BoxRow(
ListBox['LB1']([]),
Slider['SL1'](lower=1,upper=10,value=10,filled=true,majorticks=22,minorticks=1,orientation=vertical,
snapticks=false,showticks=false,showlabels=false,'onchange'=Evaluate(
'function'="majListe1"))
)
),
GridCell(
BoxColumn('inset'=0, 'spacing'=0, 'border'=true, 'caption'="Filtrer",
Label("Recherche filtrée parmi"), Label("tous les mots de niveau:"),
Label(" ",'font'=F1),
RadioButton['RBD4']("Facile",'group'='GroupeD2','onclick'=Evaluate( 'function'=
'niv1(1)')),
RadioButton['RBD5']("Moyen",'group'='GroupeD2','onclick'=Evaluate( 'function'=
'niv1(2)')),
RadioButton['RBD6']("Difficile",'group'='GroupeD2','onclick'=Evaluate(
'function'= 'niv1(3)')),
RadioButton['RBD7']("Quelconque",'value'=true,'group'='GroupeD2','onclick'=Evaluate(
'function'= 'niv1(4)')),
Label(" ",'font'=F1),
Label("Saisissez un filtre de"),Label("recherche (Ex *R**E)"),
Label("puis cliquez ""Filtrer"":"),
Label(" ",'font'=F1),
TextField['TFFiltre']('width'=12, 'enabled'=true) ,
Label(" ",'font'=F1),
Button['Effacer2']("Effacer",'onclick'= Evaluate( 'function'=
"Efface2()")) ,
Label(" ",'font'=F1),
Button['Filtrer']("Filtrer",'onclick'= Evaluate( 'function'= "FiltreMot")),
Label(" ",'font'=F1),
Label['Mess2']("Message2",'foreground'=blue),
Label(" ",'font'=F1)
)
),
GridCell(
BoxRow(
ListBox['LB2']([]),
Slider['SL2'](lower=1,upper=10,value=10,filled=true,majorticks=22,minorticks=1,orientation=vertical,
snapticks=false,showticks=false,showlabels=false,'onchange'=Evaluate(
'function'="majListe2"))
)
),
GridCell(
BoxColumn('inset'=0, 'spacing'=0, 'border'=true, 'caption'="Ajouter",
Label(" ",'font'=F1),
Label("Ajouter au dictionnaire"),Label("un mot de niveau:"),
Label(" ",'font'=F1),
RadioButton['RBD8']("Facile",'value'=true,'group'='GroupeD3','onclick'=Evaluate(
'function'= 'niv1(1)')),
RadioButton['RBD9']("Moyen",'group'='GroupeD3','onclick'=Evaluate( 'function'=
'niv1(2)')),
RadioButton['RBD10']("Difficile",'group'='GroupeD3','onclick'=Evaluate(
'function'= 'niv2(3)')),
Label(" ",'font'=F1), Label(" ",'font'=F1), Label(" ",'font'=F1),
Label("Saisissez le mot à ajouter"),
Label("puis cliquez ""Ajouter"":"),
Label(" ",'font'=F1),
TextField['TFAjout']('width'=12, 'enabled'=true) ,
Label(" ",'font'=F1),
Button['Effacer3']("Effacer",'onclick'= Evaluate( 'function'=
"Efface3")) ,
Label(" ",'font'=F1),
Button['Ajouter']("Ajouter",'onclick'= Evaluate( 'function'= "AjouteMot")),
Label(" ",'font'=F1),
Label['Mess3']("Message3",'foreground'=blue),
Label(" ",'font'=F1)
)
)
)
)
),
BoxRow('inset'=0, 'spacing'=0,
Button("Fermer", CloseWindow(FenDico))
)
))
):
|
--------------------------- Top10Maplet ( Fenetre "Top10" des meilleurs scores
) ------------------------
>
|
Top10:=proc()
Maplets[Display] (Top10Maplet)
end proc:
|
>
|
EntreNom := Maplet( 'abnormalshutdown'
= "FAIL",
InputDialog['ID1'](
"Saisissez votre prénom:", 'title' = "Entrez au Top10",
'onapprove' = Shutdown( ['ID1'] ),
'oncancel' = Shutdown( "FAIL" )
)
):
|
>
|
Formate:=proc(x::string)
local y,z,i;
y:="": z:="":
for i to length(x) do
if substring(x,i)=" " or substring(x,i)="," then y:=cat(y,"_") else y:=cat(y,substring(x,i))
end if;
end do:
for i to length(y) do
if i<=15 then z:=cat(z,substring(y,i)) end if
end do:
z
end proc:
|
>
|
NomJoueur:=proc(x::posint,r)
global ordre,joueurs,scores,fichscore,taille,total,meilleur_joueur;
local f,i,s,t;
s:=convert(cat(J,x),name):
if r="FAIL" then t:="**** MOTUS ****" else t:=Formate(convert(op(r),string))
end if:
Maplets:-Tools:-Set(s('caption')=UpperCase(t)):
if x > 0 then
joueurs[x] := UpperCase(t):
if ordre = 1 then meilleur_joueur := joueurs[x] end if;
f := fopen(fichscore[taille],WRITE):
for i to 10 do
fprintf(f, "%s\n%d\n",joueurs[i],scores[i])
end do:
fclose(f)
end if:
end proc:
|
>
|
RazScores:=proc()
global total,taille,fichscore,meilleur_joueur,meilleur;
local r,i,j,f;
r:=Alert(cat("Vous voulez remettre à zéro tous les scores.\n Veuillez
confirmer ou annuler."),title="Remise à zéro"):
if r=FAIL then return fi;
for i from 5 to 7 do
f := fopen(fichscore[i],WRITE):
for j to 10 do
fprintf(f, "%s\n%d\n","---------------",0)
end do:
fclose(f):
end do;
meilleur_joueur:="---------------": meilleur:=0;
total:=0:
majRB(taille);
end proc:
|
>
|
LireScores:=proc(n::posint)
global fichscore,joueurs,scores;
local i,f;
if n=5 then Maplets:-Tools:-Set('RBS1'('value')=true)
elif n=6 then Maplets:-Tools:-Set('RBS2'('value')=true)
else Maplets:-Tools:-Set('RBS3'('value')=true) end if;
f := fopen(fichscore[n],READ):
for i to 10 do
joueurs[i] := FileTools[Text][ReadString](f):
scores[i] := FileTools[Text][ReadInteger](f):
end do;
fclose(f):
end proc:
|
>
|
classer:=proc(i::integer)
global ordre,joueurs,scores;
local resultat,j,k,s,t,u;
ordre := -1:
if i > scores[10] then
if i > scores[1] then
for j from 10 to 2 by -1 do
scores[j]:=scores[j-1]:joueurs[j]:=joueurs[j-1]
end do;
ordre := 1:
else
for j to 9 do
if i > scores[j + 1] and i <= scores[j] then
if j < 9 then
for k from 10 to j + 2 by -1 do
scores[k]:=scores[k-1]:joueurs[k]:=joueurs[k-1]
end do;
ordre := j + 1:
break
else
ordre := 10
end if
end if
end do
end if
end if;
for j to 10 do
s:=convert(cat("S",j),name): t:=convert(cat("J",j),name):
Maplets:-Tools:-Set(t('caption')=cat(" ",joueurs[j]," ")):Maplets:-Tools:-Set(s('caption')=scores[j])
end do;
if ordre > 0 then
scores[ordre]:= i:
resultat := Maplets[Display](EntreNom);
s:=convert(cat("S",ordre),name): t:=convert(cat("J",ordre),name):
Maplets:-Tools:-Set(s('caption') = i): Maplets:-Tools:-Set(t('caption')=""):
NomJoueur(ordre,resultat)
end if;
end proc:
|
>
|
majAffichage:=proc(n::posint,
t::integer)
global total;
LireScores(n): classer(t): total:=0:
end proc:
|
>
|
Top10Maplet := Maplet(
'onstartup' = 'demarrage',
Font['F1']('family'="TIMES", 'bold'='false', 'italic'='false', size=12),
Font['F2']('family'="TIMES", 'bold'='true', 'italic'='false', size=24),
ButtonGroup['GroupeS1'](),
Window['FenScore'](
'title' = "Top10", 'layout' = 'Top10Layout', 'width'=400, 'height'=570
),
Action['demarrage'](
Evaluate('function' ='majAffichage(taille,total)'), RunWindow(FenScore)
),
BoxLayout['Top10Layout'](
GridLayout(
GridRow( GridCell(Label('image'=Image( cat(chemin,"motus.gif"))))),
GridRow(GridCell(Label(" ",'font'='F1'))),GridRow(GridCell(Label("
",'font'='F1'))),
GridRow(
GridCell(RadioButton['RBS1']("5 lettres",'group'='GroupeS1','onclick'=Evaluate('function'
= 'majAffichage(5,-1)'))),
GridCell(RadioButton['RBS2']("6 lettres",'group'='GroupeS1','onclick'=Evaluate('function'
= 'majAffichage(6,-1)'))),
GridCell(RadioButton['RBS3']("7 lettres",'group'='GroupeS1', 'onclick'=Evaluate('function'
= 'majAffichage(7,-1)')))
),
GridRow(GridCell(Label(" ",'font'='F1'))),
GridRow(GridCell(Label("1",'foreground'=red,'font'='F2')),GridCell(Label['J1']("
",'font'='F2')),GridCell(Label['S1'](" 0",'font'='F2','foreground'=blue))
),
GridRow(GridCell(Label("2",'foreground'=red,'font'='F2')),GridCell(Label['J2']("
",'font'='F2')),GridCell(Label['S2'](" 0",'font'='F2','foreground'=blue))
),
GridRow(GridCell(Label("3",'foreground'=red,'font'='F2')),GridCell(Label['J3']("
",'font'='F2')),GridCell(Label['S3'](" 0",'font'='F2','foreground'=blue))
),
GridRow(GridCell(Label("4",'foreground'=red,'font'='F2')),GridCell(Label['J4']("
",'font'='F2')),GridCell(Label['S4'](" 0",'font'='F2','foreground'=blue))
),
GridRow(GridCell(Label("5",'foreground'=red,'font'='F2')),GridCell(Label['J5']("
",'font'='F2')),GridCell(Label['S5'](" 0",'font'='F2','foreground'=blue))
),
GridRow(GridCell(Label("6",'foreground'=red,'font'='F2')),GridCell(Label['J6']("
",'font'='F2')),GridCell(Label['S6'](" 0",'font'='F2','foreground'=blue))
),
GridRow(GridCell(Label("7",'foreground'=red,'font'='F2')),GridCell(Label['J7']("
",'font'='F2')),GridCell(Label['S7'](" 0",'font'='F2','foreground'=blue))
),
GridRow(GridCell(Label("8",'foreground'=red,'font'='F2')),GridCell(Label['J8']("
",'font'='F2')),GridCell(Label['S8'](" 0",'font'='F2','foreground'=blue))
),
GridRow(GridCell(Label("9",'foreground'=red,'font'='F2')),GridCell(Label['J9']("
",'font'='F2')),GridCell(Label['S9'](" 0",'font'='F2','foreground'=blue))
),
GridRow(GridCell(Label("10",'foreground'=red,'font'='F2')),GridCell(Label['J10']("
",'font'='F2')),GridCell(Label['S10'](" 0",'font'='F2','foreground'=blue))
),
GridRow(GridCell(Label(" ",'font'='F1'))),GridRow(GridCell(Label("
",'font'='F1'))),
GridRow( GridCell(Button(" Fermer ", CloseWindow(FenScore))) )
))
):
|
---------------------------- MotusMaplet ( Fenetre de jeu "Motus")
---------------------
>
|
MotusMaplet := Maplet(
'onstartup' = 'start',
Font['F1']('family'="TIMES", 'bold'='false', 'italic'='false', size=12),
Font['F2']('family'="TIMES", 'bold'='true', 'italic'='false', size=24),
ButtonGroup['Groupe1'](), ButtonGroup['Groupe2'](),
Window['FenPrincipale'](
'title' = "Motus", 'menubar'='Menu', 'layout' = 'PrincipalLayout', 'defaultbutton'='Proposer',
'width'=700, 'height'=500
),
Window['FenQuitter']('title' = "Quitter", 'layout' = 'QuitterLayout', 'width'=350,
'height'=250),
Window['FenDico']('title' = "Dictionnaire", 'layout' = 'DicoLayout', 'width'=600,
'height'=500),
Window['FenApropos']('title' = "A propos", 'layout' = 'AproposLayout', 'width'=375,
'height'=275),
Window['FenComptage']('title'="Comptage des points", 'layout' = 'ComptageLayout',
width=500, height=350),
Window['FenDesc']('title' = "Description du jeu", 'layout' = 'DescLayout',
width=500, height=350),
Window['FenMotsAutorises']('title' = "Mots autorisés", 'layout' = 'MotsAutorisesLayout',
width=500, height=350),
Window['FenMotsExclus']('title' = "Mots exclus", 'layout' = 'MotsExclusLayout',
width=500, height=350),
Window['FenAideMotus']('title' = "Fenêtre ""Motus""", 'layout' = 'AideMotusLayout',
width=500, height=350),
Window['FenAideDict']('title' = "Fenêtre ""Dictionnaire""", 'layout' = 'AideDictLayout',
width=500, height=350),
Window['FenAideTop10']('title' = "Fenêtre ""Top10""", 'layout' =
'AideTop10Layout', width=500, height=350),
Window['FenConsulter']('title' = "Consulter - Rechercher", 'layout' = 'AideConsulterLayout',
width=500, height=350),
Window['FenFiltrer']('title' = "Filtrer", 'layout' = 'AideFiltrerLayout',
width=500, height=350),
Window['FenAjouter']('title' = "Ajouter un mot", 'layout' = 'AideAjouterLayout',
width=500, height=350),
Window['FenMenus']('title' = "Menus", 'layout' = 'AideMenusLayout', width=500,
height=350),
Window['FenBoutons']('title' = "Boutons de commande", 'layout' = 'AideBoutonsLayout',
width=500, height=350),
Window['FenOptions']('title' = "Options", 'layout' = 'AideOptionsLayout',
width=500, height=350),
Window['FenElements']('title' = "Grille de jeu", 'layout' = 'AideElementsLayout',
width=600, height=350),
Action['start'](
Evaluate('function' = "Lire_Options"), Evaluate('function' = 'majRB(taille)'),
RunWindow('FenPrincipale')
),
Action['maj'](
Evaluate('function' = "Valider_Options "), Evaluate( 'Grille'= 'trace_grille()')
),
Action['quitter'](
CloseWindow(FenQuitter), CloseWindow(FenPrincipale)
),
Action['razscores'](
Evaluate('function' = "RazScores")
),
BoxLayout['PrincipalLayout'](
MenuBar['Menu'](
Menu['Dictionnaire']("Dictionnaire",
MenuItem("Consulter", onclick= Evaluate('function' = "Dict")),
MenuSeparator(),
MenuItem("Mots autorisés", onclick=RunWindow('FenMotsAutorises')),
MenuItem("Mots exclus", onclick=RunWindow('FenMotsExclus'))
),
Menu['Scores']("Scores",
MenuItem['MenuScores']("Meilleurs scores", 'onclick'= Evaluate('function'
= "Top10")),
MenuItem['MenuScoresReset']("Remise à zéro", 'onclick'= 'razscores'),
MenuSeparator(),
MenuItem("Comptage des points", onclick=RunWindow('FenComptage'))
),
Menu("Aide",
MenuItem("Description du jeu", onclick=RunWindow('FenDesc')),
MenuSeparator(),
MenuItem("Fenêtre ""Motus""", onclick=RunWindow('FenAideMotus')),
MenuItem("> Menus",onclick=RunWindow('FenMenus')),
MenuItem("> Options",onclick=RunWindow('FenOptions')),
MenuItem("> Boutons de commande",onclick=RunWindow('FenBoutons')),
MenuItem("> Grille de jeu", onclick=RunWindow('FenElements')),
MenuSeparator(),
MenuItem("Fenêtre ""Dictionnaire""", onclick=RunWindow('FenAideDict')),
MenuItem("> ""Consulter - Rechercher""", onclick=RunWindow('FenConsulter')),
MenuItem("> ""Filtrer""", onclick=RunWindow('FenFiltrer')),
MenuItem("> ""Ajouter""", onclick=RunWindow('FenAjouter')),
MenuSeparator(),
MenuItem("Fenêtre ""Top10""", onclick=RunWindow('FenAideTop10')),
MenuSeparator(),
MenuItem("A propos", onclick=RunWindow('FenApropos'))
)
), # fin 'Menu'
BoxColumn(
[BoxRow( 'border'=true, 'inset'=0, 'spacing'=0, 'caption'="Nombre de
lettres :",
[RadioButton['RB1']("5 lettres ",'value'=true,'group'='Groupe1','onclick'=Evaluate('function'
= 'majRB(5)') ),
RadioButton['RB2']("6 lettres ",'group'='Groupe1', 'onclick'=Evaluate('function'
= 'majRB(6)') ),
RadioButton['RB3']("7 lettres ",'group'='Groupe1', 'onclick'=Evaluate('function'
= 'majRB(7)') )]
),
BoxRow( 'border'=true, 'inset'=0, 'spacing'=0, 'caption'="Niveau de jeu
:",
[RadioButton['RB4']("Facile ",'value'=true,'group'='Groupe2'),
RadioButton['RB5']("Moyen ",'group'='Groupe2'),
RadioButton['RB6']("Difficile ",'group'='Groupe2')]
)],
BoxRow(
Button['Defaut']("Options par défaut", 'onclick' = Evaluate('function' =
"OptionsParDefaut")),
Button['Valider'](" Valider les options ", 'onclick' = 'maj')
),
BoxColumn(
BoxColumn('border'=true, 'inset'=0, 'spacing'=4, 'caption'="Statistiques
:",
[ Label('caption'="Mots proposés:"),
Label['proposes']('font' = Font("default", bold, 18),'foreground'=red,'caption'=nbmots),
Label('caption'="Mots trouvés: "),
Label['trouves']('font' = Font("default", bold, 18),'foreground'=red,'caption'=nbmotstrouves)
],
[ Label['tot']('caption'="Score: "),
Label['score']('font' = Font("default", bold, 18),'foreground'=red, 'caption'=total),
Label('caption'="Meilleur score: "),
Label['meilleurscore']('font' = Font("default", bold, 18),'foreground'=red,'caption'="0")]
,
[Label('caption'="Meilleur joueur:"),Label['meilleurjoueur']('font' =
Font("default", bold=true,italic=false,14), 'foreground'=COLOR(RGB, .2, .2,
.6), 'caption'="")]
),
[Button(" Quitter Motus ", RunWindow(FenQuitter)), Button['Commencer']("Commencer
à jouer", 'enabled'=false, onclick=Evaluate( 'function'= "commencer_jeu"))]
)
),
BoxColumn('border'=true, 'inset'=0, 'spacing'=0,
[Label['LBL1']('image'=Image( cat(chemin,"motus.gif")))],
Plotter['Grille']('width'=273, 'height'=273),
[TextField['Saisie']('width'=12, 'enabled'=false, 'onchange'=Evaluate( 'function'=
"ProposeMot")),
Button['Proposer']("OK",'enabled'=false,'onclick'=Evaluate( 'function'=
"ProposeMot"))]
),
BoxColumn(VerticalGlue(), VerticalGlue(), VerticalGlue())
),
BoxLayout['QuitterLayout'](
BoxColumn(
[Label('image'=Image( cat(chemin,"motus.gif")))],
[BoxRow( Label("Voulez-vous quitter le jeu?"))],
[Button("Oui",'onclick'='quitter'),Button("Non",'onclick'=CloseWindow(FenQuitter))]
)
),
BoxLayout['AproposLayout'](
BoxColumn('border'=true, 'inset'=0, 'spacing'=0,
Label(font=F2,"Motus"),
Label("© Alain Le Stang - ""Apprendre Maple"" - 2004"),
Label(" "),
Label('foreground'=blue,"Des versions ""KMotux"" de ce jeu sous Linux/KDE
(KDE2 et KDE3)"),
Label('foreground'=blue,"sont disponibles gratuitement sur http://alamanya.free.fr/kmotux"),
Label(" "),
Button("Fermer", CloseWindow('FenApropos'))
)
),
BoxLayout['ComptageLayout'](
BoxColumn('border'=true, 'inset'=0, 'spacing'=4,
BoxRow('inset'=0, 'spacing'=0,
TextBox('wrapped'=true, 'width'=80, 'height'=10, 'editable'='false',
'value'=
"Une lettre trouvée et bien placée dans le mot rapporte 2 points.\nUne
lettre trouvée et mal placée dans le mot rapporte 1 point.\n\nUn bonus de 6
points est accordé pour un mot trouvé de niveau difficile.\n\nUn bonus de 3
points est accordé pour un mot trouvé de niveau moyen.\n")),
[Label('image'=Image( cat(chemin,"comptepts.gif")))],
BoxRow('inset'=0, 'spacing'=0,
Button("Fermer", CloseWindow('FenComptage') )
)
)
),
BoxLayout['DescLayout']( # Description du jeu
BoxColumn('border'=true, 'inset'=0, 'spacing'=4,
BoxRow('inset'=0, 'spacing'=0,
TextBox('wrapped'=true, 'width'=80, 'height'=15, 'editable'='false',
'value'=
"Le jeu MOTUS consiste à découvrir des mots tirés au hasard par
l'ordinateur sur un principe identique à celui du MASTERMIND, de façon à
réaliser le plus grand nombre de points.\n\nOn doit réaliser le score
maximal en 10 mots proposés.\n\nOn peut jouer avec des mots de 5 , 6 , ou 7
lettres.\n\nPour découvrir un mot de 5, 6, ou 7 lettres , 5, 6, ou 7 essais
sont autorisés.\n\nTrois niveaux de dictionnaire : facile, moyen, et
difficile sont proposés.\n")
),
BoxRow('inset'=0, 'spacing'=0,
Button("Fermer", CloseWindow('FenDesc') )
)
)
),
BoxLayout['MotsAutorisesLayout']( #Mots autorisés
BoxColumn('border'=true, 'inset'=0, 'spacing'=4,
BoxRow('inset'=0, 'spacing'=0,
TextBox('wrapped'=true, 'width'=80, 'height'=15 ,'editable'='false',
'value'=
"Les mots autorisés par MOTUS sont les suivants:\n\n - les noms communs
(peuvent être écrits au singulier comme au pluriel).\n\n - les adjectifs
(peuvent être écrits au singulier comme au pluriel, au masculin comme au
féminin).\n\n - les verbes (les seules formes tolérées pour les verbes
sont l'infinitif, les participes passés (éventuellement conjugués), et le
participe présent.\n\nExemples: MARIER, MARIE, MARIEE , MARIES , MARIEES ,
MARIANT sont acceptés.\n\nMARIERA, MARIAIT, MARIONS sont refusés.\n")
),
BoxRow('inset'=0, 'spacing'=0,
Button("Fermer", CloseWindow('FenMotsAutorises') )
)
)
),
BoxLayout['MotsExclusLayout']( #Mots exclus
BoxColumn('border'=true, 'inset'=0, 'spacing'=4,
BoxRow('inset'=0, 'spacing'=0,
TextBox('wrapped'=true, 'width'=80, 'height'=15, 'editable'='false',
'value'=
"Sont exclus:\n\n - les noms propres (exemple: LILLE)\n\n - les prénoms
(exemple: RAYMOND)\n\n - les mots composés (exemple: IN-FOLIO).\n\nLes
mots d'essai proposés par le joueur doivent impérativement faire partie du
dictionnaire global.\n")
),
BoxRow('inset'=0, 'spacing'=0,
Button("Fermer", CloseWindow('FenMotsExclus') )
)
)
),
BoxLayout['AideMotusLayout']( # Fenêtre "Motus"
BoxColumn('border'=true, 'inset'=0, 'spacing'=4,
BoxRow('inset'=0, 'spacing'=0,
TextBox('wrapped'=true, 'width'=80, 'height'=15, 'editable'='false',
'value'=
"La fenêtre ""Motus"" est la fenêtre de jeu: elle comporte une barre de
menus, des cadres, des boutons de commande et d'autres éléments:\n\n -
Menus: ""Dictionnaire"", ""Scores"", ""Aide"".\n\n - Cadres: ""Nombre de
lettres"", ""Niveau de jeu"", ""Statistiques"".\n\n - Boutons: ""Options
par défaut"", ""Valider les options"", ""Quitter Motus"", ""Commencer à
jouer"", ""OK"".\n\n - Autres éléments: zone de saisie du mot, grille de
jeu.\n\nConsulter les rubriques d'aide correspondantes pour plus de détails
sur leurs fonctions.\n")
),
BoxRow('inset'=0, 'spacing'=0,
Button("Fermer", CloseWindow('FenAideMotus') )
)
)
),
BoxLayout['AideDictLayout']( # Fenêtre "Dictionnaire"
BoxColumn('border'=true, 'inset'=0, 'spacing'=4,
BoxRow('inset'=0, 'spacing'=0,
TextBox('wrapped'=true, 'width'=80, 'height'=17, 'editable'='false',
'value'=
"La fenêtre ""Dictionnaire"" s'active en cliquant le sous-menu
""Consulter"" du menu ""Dictionnaire"" de la fenêtre ""Motus"".\n\nSélectionner
l'une des options: 5, 6, ou 7 lettres pour visualiser le dictionnaire des
mots de 5, 6, ou 7 lettres.\n\nLa fenêtre ""Dictionnaire"" comporte de plus
3 autres cadres et un bouton ""Fermer"":\n\n - Cadre ""Consulter -
Rechercher"".\n\n - Cadre ""Filtrer"".\n\n - Cadre ""Ajouter"".\n\nConsulter
les rubriques d'aide correspondantes pour plus de détails sur leurs
fonctions.\n")
),
BoxRow('inset'=0, 'spacing'=0,
Button("Fermer", CloseWindow('FenAideDict') )
)
)
),
BoxLayout['AideTop10Layout']( # Fenêtre "Top10"
BoxColumn('border'=true, 'inset'=0, 'spacing'=4,
BoxRow('inset'=0, 'spacing'=0,
TextBox('wrapped'=true, 'width'=80, 'height'=15, 'editable'='false',
'value'=
"La fenêtre ""Top10"" permet de visualiser les meilleurs scores établis
dans les différents types de jeu. Choisir l'une des options: 5, 6, ou 7
lettres pour afficher les meilleurs scores correspondants.\n\nCette fenêtre
est activée:\n\n - soit à partir du sous-menu ""Meilleurs scores"" du menu
""Scores"" de la fenêtre ""Motus"".\n\n - soit, à la fin d'une partie de
MOTUS, lorsque votre score est dans les 10 meilleurs scores réalisés. Dans
ce cas, vous pourrez inscrire votre nom au Top10.\n")
),
BoxRow('inset'=0, 'spacing'=0,
Button("Fermer", CloseWindow('FenAideTop10') )
)
)
),
BoxLayout['AideConsulterLayout'](
BoxColumn('border'=true, 'inset'=0, 'spacing'=4,
BoxRow('inset'=0, 'spacing'=0,
TextBox('wrapped'=true, 'width'=80, 'height'=15, 'editable'='false',
'value'=
"Pour consulter le dictionnaire correspondant aux mots de 5, 6, ou 7
lettres, procéder comme suit:\n\n - cocher l'option correspondante à 5, 6,
ou 7 lettres.\n\n - saisir dans la zone de texte les premières lettres
d'un mot, puis cliquer le bouton ""Rechercher"". La liste de mots est alors
mise à jour.\n\n - on peut aussi faire défiler la liste de mots en
utilisant l'ascenseur vertical situé à droite de la liste.\n\n Cliquer le
bouton ""Effacer"" pour effacer la zone de texte. Dans ce cas, la liste de
mots est mise à jour en revenant au début du dictionnaire.\n\n")),
BoxRow('inset'=0, 'spacing'=0,
Button("Fermer", CloseWindow('FenConsulter') )
)
)
),
BoxLayout['AideFiltrerLayout'](
BoxColumn('border'=true, 'inset'=0, 'spacing'=4,
BoxRow('inset'=0, 'spacing'=0,
TextBox('wrapped'=true, 'width'=80, 'height'=17, 'editable'='false',
'value'=
"Pour effectuer une recherche filtrée dans le dictionnaire correspondant
aux mots de 5, 6, ou 7 lettres, procéder ainsi:\n\n - cocher l'option
correspondante à 5, 6, ou 7 lettres.\n\n - dans la zone de texte, saisir
un filtre de recherche et cliquer l'une des 4 options (""facile"",
""moyen"", ""difficile"" ou ""quelconque"") pour préciser le niveau de
difficulté des mots recherchés (l'option ""quelconque"" signifie que la
recherche s'effectue parmi tous les mots du dictionnaire).\n\nExemple: Avec
5 lettres, si l'on veut chercher tous les mots dont la 3ème lettre est un E,
saisir **E** (ou plus simplement **E , les caractères non tapés étant
remplacés par *) en choisissant l'option ""quelconque"".\n\n - activer la
recherche filtrée en cliquant le bouton ""Filtrer"".\n\nLa liste de mots est
automatiquement mise à jour et le nombre de mots trouvés est affiché. On
peut faire défiler la liste de mots en utilisant l'ascenseur vertical situé
à droite de la liste.\n\nCliquer le bouton ""Effacer"" pour effacer la zone
de texte et la liste de mots.\n\n")),
BoxRow('inset'=0, 'spacing'=0,
Button("Fermer", CloseWindow('FenFiltrer') )
)
)
),
BoxLayout['AideAjouterLayout'](
BoxColumn('border'=true, 'inset'=0, 'spacing'=4,
BoxRow('inset'=0, 'spacing'=0,
TextBox('wrapped'=true, 'width'=80, 'height'=17, 'editable'='false',
'value'=
"Pour ajouter un mot dans le dictionnaire correspondant aux mots de 5, 6,
ou 7 lettres, procéder ainsi:\n\n - cocher l'option correspondante à 5, 6,
ou 7 lettres.\n\n - choisir l'une des 3 options: ""facile"", ""moyen"",
""difficile"" pour préciser le niveau de difficulté du mot à ajouter.\n\n
- dans la zone de texte, saisir le mot à ajouter.\n\n - pour valider ce
mot, cliquer le bouton ""Ajouter"".\n\nCliquer le bouton ""Effacer"" pour
effacer la zone de texte.\n\nDans le cas où le mot contient des caractères
non alphabétiques , un message ""Mot incorrect"" apparait. Dans le cas où le
mot existe déjà dans le dictionnaire , un message ""Mot déjà présent""
apparait. Corriger alors dans la zone de texte le mot à ajouter.\n\n")),
BoxRow('inset'=0, 'spacing'=0,
Button("Fermer", CloseWindow('FenAjouter') )
)
)
),
BoxLayout['AideMenusLayout'](
BoxColumn('border'=true, 'inset'=0, 'spacing'=4,
BoxRow('inset'=0, 'spacing'=0,
TextBox('wrapped'=true, 'width'=80, 'height'=15, 'editable'='false',
'value'=
"La barre des menus comporte 3 menus se divisant en sous-menus:\n\nMenu
""Dictionnaire"":\n - sous-menu ""Consulter"": active la fenêtre
""Dictionnaire"" permettant de consulter, rechercher ou ajouter un mot aux
différents dictionnaires.\n - sous-menu ""Mots autorisés"": aide sur les
mots autorisés au jeu ""Motus"".\n - sous-menu ""Mots exclus"": aide sur
les mots interdits au jeu ""Motus"".\n\nMenu ""Scores"":\n - sous-menu
""Meilleurs scores"": active la fenêtre ""Top10"" permettant de consulter
les meilleurs scores réalisés au jeu ""Motus"".\n - sous-menu ""Remise à
zéro"": permet de remettre tous les meilleurs scores à 0 après une demande
de confirmation.\n - sous-menu:""Comptage des points"": aide sur la façon
de compter les points au jeu ""Motus"".\n\nMenu ""Aide"":\nCe menu comporte
plusieurs sous-menus permettant d'obtenir de l'aide sur le jeu
""Motus"".\n\n
")),
BoxRow('inset'=0, 'spacing'=0,
Button("Fermer", CloseWindow('FenMenus') )
)
)
),
BoxLayout['AideBoutonsLayout'](
BoxColumn('border'=true, 'inset'=0, 'spacing'=4,
BoxRow('inset'=0, 'spacing'=0,
TextBox('wrapped'=true, 'width'=80, 'height'=15, 'editable'='false',
'value'=
"Cliquer le bouton ""Options par défaut"" pour restaurer les valeurs par
défaut des options de jeu. Les valeurs par défaut des options de jeu sont:
""5 lettres"", niveau ""facile"".\n\nCliquer le bouton ""Valider les
options"" pour appliquer les options choisies. Dans ce cas, les boutons
""Commencer à jouer"" et ""OK"" ainsi que la zone de saisie du mot
deviennent disponibles.\n\nCliquer le bouton ""Quitter Motus"" pour terminer
le jeu.\n\nCliquer le bouton ""Commencer à jouer"" pour débuter une nouvelle
partie. Dans ce cas, la consultation des menus ""Dictionnaire"" et ""Top10""
devient impossible.\n\nCliquer le bouton ""OK"" en cours de jeu pour valider
le mot contenu dans la zone de saisie.\n\n
")),
BoxRow('inset'=0, 'spacing'=0,
Button("Fermer", CloseWindow('FenBoutons') )
)
)
),
BoxLayout['AideElementsLayout'](
BoxColumn('border'=true, 'inset'=0, 'spacing'=4,
BoxRow('inset'=0, 'spacing'=0,
[Label('image'=Image( cat(chemin,"grille.gif")))],
TextBox('wrapped'=true, 'width'=80, 'height'=15, 'editable'='false',
'value'=
"La grille de jeu est un tableau carré (5x5 , 6x6 , ou 7x7) où les mots du
joueur sont analysés puis affichés avec un code de couleur, selon un
principe similaire à celui du MASTERMIND.\n\nLa zone de saisie, située sous
la grille de jeu, permet au joueur d'entrer ses mots d'essai.\n\nValidation
du mot: elle peut se faire en pressant la touche <Entrée> du clavier dans la
zone de texte, ou en cliquant le bouton ""OK"" situé à droite de la zone de
saisie.\n\nCodes couleurs: l'ordinateur fournit la première lettre du mot
qu'il a choisi. La première ligne de la grille correspond au premier essai
du joueur, la seconde au deuxième essai ... Le joueur a donc 5 essais pour
trouver un mot de 5 lettres, 6 essais pour trouver un mot de 6 lettres, 7
essais pour trouver un mot de 7 lettres.\n\nUne lettre de couleur orange
correspond à une lettre présente et bien placée dans le mot, cette lettre
pouvant figurer par ailleurs dans ce mot.\nUne lettre de couleur jaune
correspond à une lettre présente et mal placée dans le mot, cette lettre
pouvant figurer par ailleurs dans ce mot.\nUne lettre de couleur blanche
correspond à une lettre absente du mot.\n\n
")),
BoxRow('inset'=0, 'spacing'=0,
Button("Fermer", CloseWindow('FenElements') )
)
)
),
BoxLayout['AideOptionsLayout'](
BoxColumn('border'=true, 'inset'=0, 'spacing'=4,
BoxRow('inset'=0, 'spacing'=0,
TextBox('wrapped'=true, 'width'=80, 'height'=15, 'editable'='false',
'value'=
"Le cadre ""Nombre de lettres"" permet de choisir l'option: mots de 5, de
6, ou de 7 lettres.\n\nLe cadre ""Niveau de jeu"" permet de choisir des mots
de niveau facile, moyen, ou difficile.\n\nLes valeurs par défaut des options
de jeu sont: ""5 lettres"", niveau ""facile"".\n\nLe cadre ""Statistiques""
fournit des renseignements au cours du jeu: nombre de mots proposés (de 1 à
10), nombre de mots trouvés (de 1 à 10), score du joueur, meilleur score,
nom du meilleur joueur.\n\n"
)),
BoxRow('inset'=0, 'spacing'=0,
Button("Fermer", CloseWindow('FenOptions') )
)
)
)
): |
|
Initialisation des variables globales et démarrage du jeu:
>
|
nbmotstrouves:=0:
meilleur:=0 : taille:=5 : niveau:=1 :
level:=0 : lev1:=4 : lev2:=1 : opt:=5: listefiltree:=[]:
total:=0: ordre:=0: mot:="": motsaisi:="": nbmots:=0: fin:=false: ligne:=0 :
gagne:=false: meilleur_joueur:="": qual["1"] := " (Facile)": qual["2"] := "
(Moyen)": qual["3"] := " (Difficile)":
for k to 10 do joueurs[k]:="": scores[k]:=0 end do:
m1:=array(5..7): m2:=array(5..7): m3:=array(5..7):
for i from 5 to 7 do
fichalpha[i] := cat(chemin,"motsenclair",i,".txt"):
fichscore[i] := cat(chemin,"top",i,".txt")
end do:
pref:=cat(chemin,"pref.txt"):
Maplets[Display] (MotusMaplet); |
|

|