Forum de mathématiques - Bibm@th.net
Vous n'êtes pas identifié(e).
- Contributions : Récentes | Sans réponse
Répondre
Résumé de la discussion (messages les plus récents en premier)
- okayassu
- 15-03-2014 16:52:04
ça fera toujours des Economies de perruques lol
mais je sens que je vais pas tarder à revenir ^^
en tous cas encore merci :))
Oka
- yoshi
- 15-03-2014 16:50:36
Re,
Ça marche ?
Alors, c'est bien...
La route est longue, mais la voie est libre ! disent les défenseurs des logiciels libres...
@+
- okayassu
- 15-03-2014 16:45:27
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 :))
- okayassu
- 15-03-2014 16:34:15
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 ^^
- yoshi
- 15-03-2014 15:35:20
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é...
@+
- yoshi
- 15-03-2014 14:01:18
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...
@+
- okayassu
- 15-03-2014 14:01:03
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? )
- okayassu
- 15-03-2014 13:38:20
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
- yoshi
- 15-03-2014 13:17:14
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".
@+
- okayassu
- 15-03-2014 12:32:16
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







