Forum de mathématiques - Bibm@th.net
Vous n'êtes pas identifié(e).
- Contributions : Récentes | Sans réponse
#1 15-03-2014 13:32:16
- okayassu
- Membre
- Inscription : 08-03-2014
- Messages : 16
[PHP] donner la possibilité de rejouer dans un jeu
Bonjour ,
Ayé je suis passée au php :))
je dois réaliser l'exercice suivant:
Implémenter en PHP l'algorithme qui permettra de faire deviner un nombre à l'utilisateur. Le nombre à deviner sera un nombre entre 1 et 10 généré aléatoirement par PHP. L'utilisateur devra saisir un nombre .l'utilisateur a 10 chances, une fois ces 10 chances épuisées le jeu s'arrête, indiquer à l'utilisateur si le nombre saisi est plus grand ou plus petit que le nombre à deviner et d'afficher le nombre de chances restantes . Si l'utilisateur a trouvé le nombre aléatoire avant épuisement de ses chances le jeu s'arrête., s'il n'a plus de chances le jeu s’arrête .
et là ça se corse ^^ :
Complétez votre algorithme pour qu'à la fin d'une partie le programme propose à l'utilisateur de rejouer : "Voulez-vous rejouer ? (oui/non)"
voici ce que j'ai fait :
$resultat = mt_rand(1, 10);
$tentatives = 10 ;
$rejouer = "oui";
do {
echo "saisir un nombre entre 1 et 10" . PHP_EOL;
$n = trim(fgets(STDIN));
if ($n < $resultat) {
echo "ton nombre est plus petit que la bonne reponse" . PHP_EOL;
} else if ($n > $resultat) {
echo "ton nombre est plus grand que la bonne reponse " . PHP_EOL;
}
$tentatives--;
if ($n!=$resultat)
{
echo "il ne te reste plus que $tentatives tentative(s)" . PHP_EOL;
}
} while ($n != $resultat && $tentatives!=0 );
if ($tentatives==0)
{
echo "perdu!" . PHP_EOL;
}
else {
echo "gagné!" . PHP_EOL ;}
echo "veux tu rejouer oui /non ?";
$reponse = trim(fgets(STDIN));
comment recommencer le jeu si $reponse==$rejouer ?
j'ai tenté d'ajouter la condition $reponse!=$rejouer dans ma boucle while mais cela ne fonctionne pas :(
j'ai aussi tenté de le rajouter avant ma boucle DO
if ($reponse==$rejouer){
}do {
echo "saisir un nombre entre 1 et 10" . PHP_EOL; etc....
mais ça non plus ça ne fonctionne pas .
merci d'avance pour votre aide , je m'arrache les cheveux ^^
Okayassu
Dernière modification par okayassu (15-03-2014 13:46:31)
Hors ligne
#2 15-03-2014 14:17:14
- yoshi
- Modo Ferox
- Inscription : 20-11-2005
- Messages : 16 991
Re : [PHP] donner la possibilité de rejouer dans un jeu
Re,
Désolé ! Je ne connais rien au php !
Pt'êt acheter une perruque ? ^_^
Bon, j'ai essayé de comprendre...
Ta boucle While est-elle à l'intérieur de la boucle Do ?.
Où commence l'une, où débute l'autre ?
Moi j'aurais fait comme ça :
Do
| Initialisations
| echec = oui
|While tentatives !=0 and echec == Oui
| Réponse du joueur
| Test de la réponse : 3 cas :
| Réponse supérieure --> décrémente tentatives
| Réponse inférieure --> décrémente tentatives
| Bonne réponse --> Félicitations --> echec = non
| Voulez-vous rejouer ?
| Si reponse == non alors break
Le programme fait quoi ?
On entre dans une boucle : qui initialise les données...
Cela fait on entre dans une sous-boucle qui elle va récupérer la réponse du joueur :
Si elle est fausse (inf ou sup) on décrémente le nb d'essais.
Ainsi arrivé à 0 : la condition pour continuer dans la boucle while n'est plus vérifiée et on sort...
Si la réponse est bonne, on met echec à non : la condition pour continuer dans la boucle while n'est plus vérifiée et on sort...
Sortis de cette boucle on est toujours dans la boucle Do, et c'est là que tu dois poser la question d'arrêter le jeu ou pas.
Si oui, on ajoute l'instruction break qui "casse" la boucle et on a fini
Si break ne te plaît pas, tu remplaces ton Do par un while $continue == "oui".
Avant cette boucle tu notes continue = "oui",
Et tout à la fin, à la place du break, tu notes : $continue="non".
@+
Arx Tarpeia Capitoli proxima...
Hors ligne
#3 15-03-2014 14:38:20
- okayassu
- Membre
- Inscription : 08-03-2014
- Messages : 16
Re : [PHP] donner la possibilité de rejouer dans un jeu
bonjour Yoshi et merci pour ta reponse
nous avons a peu prés le même raisonnement :
si la réponse de l'utilisateur est "oui "recommence le jeu
sinon arrete ( qui pour moi est facultatif )
je n'arrive pas à voir où je place mon :
if ($reponse==$rejouer) {( logiquement c'est toute ma boucle du jeu qui doit être là) sinon arrête !!
j'ai beau le placer avant ma grande boucle de jeu cela ne fonctionne pas
Hors ligne
#4 15-03-2014 15:01:03
- okayassu
- Membre
- Inscription : 08-03-2014
- Messages : 16
Re : [PHP] donner la possibilité de rejouer dans un jeu
alors j'ai bien une petite piste :
switch ($reponse){
case ($reponse==$rejouer);
break;
}do
{
echo "saisir un nombre entre 1 et 10" . PHP_EOL;
$n = trim(fgets(STDIN));
if ($n < $resultat) {
echo "ton nombre est plus petit que la bonne reponse" . PHP_EOL;
} else if ($n > $resultat) {
echo "ton nombre est plus grand que la bonne reponse " . PHP_EOL;
}
$tentatives--;
if ($n!=$resultat)
{
echo "il ne te reste plus que $tentatives tentative(s)" . PHP_EOL;
}
} while ($n != $resultat && $tentatives!=0 );
if ($tentatives==0)
{
echo "perdu!" . PHP_EOL;
}
else {
echo "gagné!" . PHP_EOL ;}
echo "veux tu rejouer oui /non ?";
$reponse = trim(fgets(STDIN));
ne fonctionne pas ( problème d'accolades du switch? )
Dernière modification par okayassu (15-03-2014 15:16:19)
Hors ligne
#5 15-03-2014 15:01:18
- yoshi
- Modo Ferox
- Inscription : 20-11-2005
- Messages : 16 991
Re : [PHP] donner la possibilité de rejouer dans un jeu
Re,
Je répète mes questions :
Ta boucle While est-elle à l'intérieur de la boucle Do ?.
Où commence l'une, où débute l'autre ?
Je te conseille d'écrire ton algo en pseudo-code sur papier, puis de simuler le fonctionnement sur papier toujours......
Quant à ce que j'ai écrit, j'ai tenu compte de ce que tu as fait et je suis sûr à 99% que si je le traduis en langage Python, ça va fonctionner correctement...
Je te répète que tes deux boucles devraient être imbriquées
La 1ere initialise au début les données.
Lorsque c'est fait, en restant à l'intérieur, on déclare une 2e boucle qui va gérer les essais et les réponses...
on ne doit pouvoir en sortir qu'à deux conditions, soit le nombre d'essais est à 0, soit la réponse est bonne.
Lorsqu'on en sort on se retrouve à l'intérieur de la 1ere boucle et là on pose la question de rejouer ou pas : oui on repart au début, non on sort.
Et ça, c'est indépendant du langage...
@+
Arx Tarpeia Capitoli proxima...
Hors ligne
#6 15-03-2014 16:35:20
- yoshi
- Modo Ferox
- Inscription : 20-11-2005
- Messages : 16 991
Re : [PHP] donner la possibilité de rejouer dans un jeu
Re,
J'ai traduit ce que je t'ai dit en Python :
from random import randint
rejouer="oui"
while rejouer=="oui": #pour sortir du jeu il faudra répondre non à la dernière question
nb=randint(10,20) # choix aléatoire d'un nombre entre 10 et 20
tentatives=10 # initialisation du nombre de tentatives à 10
cbon="non" # initialisation de cbon à "non"
while tentatives>0 and cbon=="non": # dès que soit tentatives passe à 0 ou cbon passe à "oui", on sort de cette boucle
chx=int(raw_input("Votre nombre : ")) # choix d'un nombre par le joueur
if chx>nb:
print "Trop grand ! Essaie à nouveau..."
tentatives-=1
print "Il reste",tentatives,"essais"
print
elif chx<nb:
print "Trop petit ! Essaie à nouveau..."
tentatives-=1
print "Il reste",tentatives,"essais"
print
else:
print "Bravo ! C'est juste !"
cbon="oui" # Je passe cbon à "oui" pour sortir
print
rejouer=raw_input("Voulez-vous rejouer (oui/non) :")
print "Bye-bye !"
Voilà les sorties :
Votre nombre : 15
Trop petit ! Essaie à nouveau...
Il reste 9 essaisVotre nombre : 18
Trop petit ! Essaie à nouveau...
Il reste 8 essaisVotre nombre : 19
Bravo ! C'est juste !Voulez-vous rejouer (oui/non) :oui
Votre nombre : 15
Trop petit ! Essaie à nouveau...
Il reste 9 essaisVotre nombre : 16
Trop petit ! Essaie à nouveau...
Il reste 8 essaisVotre nombre : 20
Trop grand ! Essaie à nouveau...
Il reste 7 essaisVotre nombre : 17
Trop petit ! Essaie à nouveau...
Il reste 6 essaisVotre nombre : 187
Trop grand ! Essaie à nouveau...
Il reste 5 essaisVotre nombre : 18
Trop petit ! Essaie à nouveau...
Il reste 4 essaisVotre nombre : 19
Bravo ! C'est juste !Voulez-vous rejouer (oui/non) :non
Bye-bye !
Tu vois ça fonctionne effectivement.
Ne cherche rien de compliqué : repars plutôt de ton 1er jet, le code ci-dessus en est directement inspiré...
@+
Arx Tarpeia Capitoli proxima...
Hors ligne
#8 15-03-2014 17:45:27
- okayassu
- Membre
- Inscription : 08-03-2014
- Messages : 16
Re : [PHP] donner la possibilité de rejouer dans un jeu
trouvé ^^
$reponse = "oui";
do {
$resultat = mt_rand(1, 10);
$tentatives = 10 ;
do
{
echo "saisir un nombre entre 1 et 10" . PHP_EOL;
$n = trim(fgets(STDIN));
if ($n < $resultat) {
echo "ton nombre est plus petit que la bonne reponse" . PHP_EOL;
} else if ($n > $resultat) {
echo "ton nombre est plus grand que la bonne reponse " . PHP_EOL;
}
$tentatives--;
if ($n!=$resultat)
{
echo "il ne te reste plus que $tentatives tentative(s)" . PHP_EOL;
}
} while ($n != $resultat && $tentatives!=0 );
if ($tentatives==0)
{
echo "perdu!" . PHP_EOL;
}
else {
echo "gagné!" . PHP_EOL ;}
echo "veux tu rejouer oui /non ?";
$reponse = trim(fgets(STDIN));
}while ($reponse == "oui");
merci beaucoup beaucoup
la route fut longue :))
Hors ligne