Jeu 94%
Résolu
el_clapotis
Messages postés
15
Statut
Membre
-
el_clapotis Messages postés 15 Statut Membre -
el_clapotis Messages postés 15 Statut Membre -
Bonjour,
j'ai fait le programme pour un jeu 94%
Je vais vous expliquer le principe du jeu, Tu as un thème (une phrase, un mot ) et le joueur doit trouver des mot reliés à ton thème S'il trouve 94% des mots alors il a gagné. Exemple:
thème: famille
mots à trouver: mère, père, grands-parents, frère, sœur, tante; oncle, neveu. Pour gagner la partie l'utilisateur doit trouver 7 des 8 mots cités en haut
donc voilà ce que j'ai fait
j'ai l'impression qu'il est plein de fautes , et je veux savoir si mon principe de travail est correcte
j'ai besoin de vous, merci d'avance
j'ai fait le programme pour un jeu 94%
Je vais vous expliquer le principe du jeu, Tu as un thème (une phrase, un mot ) et le joueur doit trouver des mot reliés à ton thème S'il trouve 94% des mots alors il a gagné. Exemple:
thème: famille
mots à trouver: mère, père, grands-parents, frère, sœur, tante; oncle, neveu. Pour gagner la partie l'utilisateur doit trouver 7 des 8 mots cités en haut
donc voilà ce que j'ai fait
program jeu_94;
var mot:string;
begin
writeln('bienvenue');
writeln('le rincipe du jeu insiste de trouver un mot qui a une relation avec le terme donnez');
writeln('level 1 ');
writeln('trousse');
readln(mot);
if (mot='stylo') or (mot='crayon') or(mot='correcteur') or (mot='couleur') or(mot='gomme') or(mot='feutre') or(mot='règle') or(mot='arrondisseur') or(mot='taille crayon') then
begin
writeln('you win');
writeln('leval 2');
writeln('famille');
readln(mot);
if (mot='mère') or (mot='père') or(mot='frère') or (mot='sœur') or(mot='tante') or(mot='oncle') or(mot='grands parents')
then
begin
writeln('you win');
writeln('level 3');
writeln('boisson');
readln(mot);
if (mot='eau') or (mot='jus') or (mot='thé‚') or (mot='café‚') or(mot='lait') then
begin
writeln('you win');
writeln('level 4');
writeln('cartable');
readln(mot);
if (mot='trousse') or (mot='cahier') or(mot='livre') or (mot='ardoise') or(mot='gomme') or(mot='feutre') or(mot='règle') then
begin
writeln('you win');
writeln('level 5');
writeln('jardin');
readln(mot);
if (mot='arbre') or (mot='flure') or (mot='fruit') or (mot='chaise') or(mot='gazon') or (mot='sol') or (mot='puits') then
begin
writeln('you win');
writeln('level 6');
writeln('médecine');
readln(mot);
if (mot='docteur') or (mot='médicament') or (mot='hôpital') or (mot='infirmier') or(mot='patient') or (mot='maladie') then
begin
writeln('you win');
writeln('level 7');
writeln('ordinateur');
readln(mot);
if (mot='sourie') or (mot='clavier') or (mot='ecran') or (mot='cd') or(mot='dvd') or (mot='ram') or (mot='rom') then
begin
writeln('you win');
writeln('leval 8');
writeln('cuisine');
readln(mot);
if (mot='r‚frig‚rateur') or (mot='cuisini‚re') or (mot='table') or (mot='chaise') or(mot='vaisselle') or (mot='lampe') or (mot='mixeurs')or (mot='lave vaisselle') then
begin
writeln('you win');
writeln('congratulation');
end
else
writeln('you lose');
end
else
writeln('you lose');
end
else
writeln('you lose');
end
else
writeln('you lose');
end
else
writeln('you lose');
end
else
writeln('you lose');
end
else
writeln('you lose');
end
else
writeln('you lose');
readln;
end.
j'ai l'impression qu'il est plein de fautes , et je veux savoir si mon principe de travail est correcte
j'ai besoin de vous, merci d'avance
4 réponses
-
Bonjour,
Le principe des if à répétitions ne peut pas être correct, ici tu as 8 niveaux, imagine ton code si tu en avais 100 par exemple...
Il faudrait que tu gères différemment tes données par exemple en stockant tes niveaux (thème et mots à trouver) dans un tableau.
Ainsi au lieu d'avoir une imbrication de if à rallonge, tu aurais une simple boucle sur chaque niveau. -
voila ce que j'ai fait
program jeu94; type tab=array[1..6] of string; var mot:string; i:integer; q1,q2,q3,q4,q5:tab; gn:boolean; level:array[1..6] of tab; procedure jeu(mmot:string; t:tab; var d:boolean); var j,cpt,m:integer; score:integer; begin cpt:=0; r:=0; d:=false; for j:=2 to 6 do begin writeln('entrez les mots lies au:',t[1]); readln(mmot); for m:=2 to 6 do begin if (mmot=t[m]) then cpt:=cpt+1; end; end; score:=(100*cpt)div 5; if (score>=94) then begin d:=true; writeln('tu as gagne ton score est ',score,' passant au theme suivant'); end else begin d:=false; writeln('niveau echoue ton score est ',score); end; readln; end; begin q1[1]:='aliments riches en fer'; q1[2]:='thym'; q1[3]:='curry'; q1[4]:='lentilles'; q1[5]:='cumin'; q1[6]:='pisson'; q2[1]:='touristiques plage destinations'; q2[6]:='maldives'; q2[2]:='bulgaria'; q2[3]:='antalya';q2[4]:='hawaii'; q2[5]:='sydney'; q3[1]:='meilleurs nations du foot en coupe de monde'; q3[6]:='argentine'; q3[2]:='bresil'; q3[3]:='algerie';q3[4]:='allemagne'; q3[5]:='italie'; q4[1]:='pays peuples'; q4[2]:='chine'; q4[3]:='etats unis'; q4[4]:='inde'; q4[5]:='indonesie'; q4[6]:='japon'; q5[1]:='voitures de course'; q5[6]:='ferrari';q5[2]:='bentley'; q5[3]:='lamborghini';q5[4]:='maserati'; q5[5]:='bugatti'; level[1]:=q2; level[2]:=q3; level[3]:=q4; level[4]:=q5; writeln('Bienvenue au JEU 94% assure toi de collecter 94 du score ou plus'); jeu(mot,q1,gn); i:=1; while (gn=true)and (i<=5) do begin jeu(mot,level[i],gn); i:=i+1; end; end.-
Il y a encore quelques maladresses mais dans l'idée c'est quand même beaucoup mieux de coder ainsi, ça facilite le développement et la compréhension du code.
Remarque : Pour l'instant dans ton programmescore:=(100*cpt)div 5;
ne peut dépasser 94 que si cpt = 5, il faudrait donc faire un sans faute pour réussir...
Dans le jeu 94% chaque réponse a un poids puisqu'il s'agit de retrouver les résultats d'un sondage. C'est la somme de ces poids qui doit atteindre 94%.
Exemple : Animaux herbivores32% : Vache
Source : http://www.les-reponses.fr/solutions-94-pour-cent.html
13% : Cheval
10% : Âne
10% : Chèvre
9% : Mouton
8% : Tortue
6% : Lapin
3% : Éléphant
2% : Panda
1% : Girafe
PS. sur ce forum les balises de code pour le langage Pascal c'est <code delphi> -
-
-
compris KX
j'ai crée un nouveau tableau pour les pourcentages,
et j'ai mis le variable score à la place de cpt ,, donc il reçoit la somme des pourcentages de chaque réponse correcte
voilàprogram jeu94; type tab=array[1..6] of string; var mot:string; m:integer; q1,q2,q3,q4,q5:tab; gn:boolean; level:array[1..6] of tab; procedure jeu(mmot:string; t:tab; var d:boolean); var j,i,score:integer; pourcent:array[1..6] of integer; begin pourcent[1]:=0; pourcent[2]:=30; pourcent[3]:=25; pourcent[4]:=16;pourcent[5]:=16; pourcent[6]:=11; score:=0; d:=false; for j:=2 to 6 do begin writeln('entrez les mots lies au:',t[1]); readln(mmot); for i:=2 to 6 do begin if (mmot=t[i]) then score:=score+pourcent[i]; end; end; if (score>=94) then begin d:=true; writeln('tu as gagne ton score est ',score,'% passant au theme suivant'); end else begin d:=false; writeln('niveau echoue ton score est ',score,'%'); end; readln; end; begin q1[1]:='aliments riches en fer'; q1[2]:='thym'; q1[3]:='curry'; q1[4]:='lentilles'; q1[5]:='cumin'; q1[6]:='pisson'; q2[1]:='touristiques plage destinations'; q2[6]:='maldives'; q2[2]:='bulgaria'; q2[3]:='antalya';q2[4]:='hawaii'; q2[5]:='sydney'; q3[1]:='meilleurs nations du foot en coupe de monde'; q3[6]:='argentine'; q3[2]:='bresil'; q3[3]:='algerie';q3[4]:='allemagne'; q3[5]:='italie'; q4[1]:='pays peuples'; q4[2]:='chine'; q4[3]:='etats unis'; q4[4]:='inde'; q4[5]:='indonesie'; q4[6]:='japon'; q5[1]:='voitures de course'; q5[6]:='ferrari';q5[2]:='bentley'; q5[3]:='lamborghini';q5[4]:='maserati'; q5[5]:='bugatti'; level[1]:=q2; level[2]:=q3; level[3]:=q4; level[4]:=q5; writeln('Bienvenue au JEU 94% assure toi de collecter 94 du score ou plus'); jeu(mot,q1,gn); m:=1; while (gn=true)and (m<=5) do begin jeu(mot,level[m],gn); m:=m+1; end; end.-
Je ne comprends pas pourquoi tu as mis
pourcent[1]:=0; pourcent[2]:=30; pourcent[3]:=25; pourcent[4]:=16; pourcent[5]:=16; pourcent[6]:=11;
C'est au hasard ?
Parce que normalement pour chaque niveau tu vas avoir des pourcentages différents, il n'y a pas de raison pour que ce soit toujours 30-25-16-16-11
D'autant que, pareil, mathématiquement pour avoir 94% avec ces valeurs il faut absolument faire un sans faute (avec une erreur tu aurais maximum 89%...)
Concernant l'implémentation maintenant, pour aller encore plus loin, je te conseilles d'utiliser des structures de données.
Exemple (compilé avec FreePascal)
type Response = record value : String; percent : integer; end; Level = record title : String; responses : array[1..10] of Response; end; var Game : Array[1..2] of Level = ( (title:'Animaux herbivores'; responses:((value:'vache'; percent:32), (value:'cheval'; percent:13), (value:'ane'; percent:10), (value:'chevre'; percent:10), (value:'mouton'; percent:9), (value:'tortue'; percent:8), (value:'lapin'; percent:6), (value:'elephant'; percent:3), (value:'panda'; percent:2), (value:'girafe'; percent:1)) ),(title:'C''est bleu'; responses:((value:'mer'; percent:41), (value:'ciel'; percent:36), (value:'yeux'; percent:7), (value:'jeans'; percent:4), (value:'schtroumpf'; percent:4), (value:'stylo'; percent:2), (value:''; percent:0), (value:''; percent:0), (value:''; percent:0), (value:''; percent:0)) ));
Avec cette structure tu peux par exemple faire ce genre de code :
var lvl:Level; rsp:Response; i,j:integer; begin for i := 1 to 2 do begin lvl := Game[i]; writeln(lvl.title); writeln(); for j := 1 to 10 do begin rsp := lvl.responses[j]; if (rsp.percent > 0) then writeln(rsp.value,' ',rsp.percent,'%'); end; writeln(); end; readln; end.
Ce qui donne :Animaux herbivores
vache 32%
cheval 13%
ane 10%
chevre 10%
mouton 9%
tortue 8%
lapin 6%
elephant 3%
panda 2%
girafe 1%
C'est bleu
mer 41%
ciel 36%
yeux 7%
jeans 4%
schtroumpf 4%
stylo 2%
-
-
D'accord j'ai compris,, le travail avec les structures de donnés a simplifié le programme, merci pour l'aide et vos astuces , ça m'a aidé beaucoup
Juste une autre question , est ce qu'il y a une autre méthode appart les structures de donnés?-
On pourrait très bien imaginer écrire des fichiers, soit un par niveau soit globalement, ce qui évite d'avoir à remplir les données dans le code.
Mais en terme de manipulation du code on reviendra sûrement à une structure de données comme celle-ci.
Après on pourrait aller plus loin en faisant du Pascal Objet, mais la notion d'objet est assez proche de la structure de données aussi, c'est surtout les fonctions qui changerait. -
-