Bibm@th

Forum de mathématiques - Bibm@th.net

Bienvenue dans les forums du site BibM@th, des forums où on dit Bonjour (Bonsoir), Merci, S'il vous plaît...

Vous n'êtes pas identifié(e).

#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 988

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 988

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 988

Re : [PHP] donner la possibilité de rejouer dans un jeu

Re,

J'ai traduit ce que je t'ai dit en Python :

# -*- coding: Latin-1 -*-
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 essais

Votre nombre : 18
Trop petit ! Essaie à nouveau...
Il reste 8 essais

Votre nombre : 19
Bravo ! C'est juste !

Voulez-vous rejouer (oui/non) :oui
Votre nombre : 15
Trop petit ! Essaie à nouveau...
Il reste 9 essais

Votre nombre : 16
Trop petit ! Essaie à nouveau...
Il reste 8 essais

Votre nombre : 20
Trop grand ! Essaie à nouveau...
Il reste 7 essais

Votre nombre : 17
Trop petit ! Essaie à nouveau...
Il reste 6 essais

Votre nombre : 187
Trop grand ! Essaie à nouveau...
Il reste 5 essais

Votre nombre : 18
Trop petit ! Essaie à nouveau...
Il reste 4 essais

Votre 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

#7 15-03-2014 17:34:15

okayassu
Membre
Inscription : 08-03-2014
Messages : 16

Re : [PHP] donner la possibilité de rejouer dans un jeu

je cherche toujours hein :))

je reviens vers toi dès que j'ai reussi , grace à tes explication je sens que je ne suis plus tres loin ^^

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

#9 15-03-2014 17:50:36

yoshi
Modo Ferox
Inscription : 20-11-2005
Messages : 16 988

Re : [PHP] donner la possibilité de rejouer dans un jeu

Re,

Ça marche ?
Alors, c'est bien...

La route est longue, mais la voie est libre ! disent les défenseurs des logiciels libres...

@+


Arx Tarpeia Capitoli proxima...

Hors ligne

#10 15-03-2014 17:52:04

okayassu
Membre
Inscription : 08-03-2014
Messages : 16

Re : [PHP] donner la possibilité de rejouer dans un jeu

ça fera toujours des Economies de perruques lol

mais je sens que je vais pas tarder à revenir ^^

en tous cas encore merci :))

Oka

Hors ligne

Réponse rapide

Veuillez composer votre message et l'envoyer
Nom (obligatoire)

E-mail (obligatoire)

Message (obligatoire)

Programme anti-spam : Afin de lutter contre le spam, nous vous demandons de bien vouloir répondre à la question suivante. Après inscription sur le site, vous n'aurez plus à répondre à ces questions.

Quel est le résultat de l'opération suivante (donner le résultat en chiffres)?
soixante dix-neuf moins cinquante sept
Système anti-bot

Faites glisser le curseur de gauche à droite pour activer le bouton de confirmation.

Attention : Vous devez activer Javascript dans votre navigateur pour utiliser le système anti-bot.

Pied de page des forums