Partie I : 7) [TP] L'éternel jeu du plus ou moins
On y va ...

Règles du jeu et conseils
Le jeu du plus ou moins est un jeu assez simple qui consiste à trouver un nombre que l'ordinateur aura choisi aléatoirement.
Voici comment ce déroule le jeu:
- L'ordinateur tire un nombre aléatoirement.
- Le joueur donne un nombre.
- L'ordinateur dit si le nombre donnée par le joueur et supérieur, égal, ou inférieur au nombre qu'il a tiré au début du jeu.
- Si c'est le bon nombre, on dit au joueur qu'il a gagné, sinon on lui en demande un nouveau.
Voila c'est pas compliqué.
Le but du jeu est donc de trouver le nombre mystère. Mais ce que je ne vous ai pas dit c'est qu'il faut le trouver en essayant le moins de fois, c'est-à-dire que si le nombre mystère se trouve en 1 et 100 et que vous le trouvez en 50 essais c'est un très mauvais score. Alors que si vous le trouvez en 5 coups (= 5 essais) c'est pas mal.
Vous n'aurez besoin que d'une seule fonction que vous ne connaissez pas encore :
Code VB :
function rand(min,max) rand = int(rnd(1)*(max-min+1))+min end function
En fait, ce que vous avez besoin c'est de la fonction rnd() qui est innée, et quelque soit le paramètre que vous lui passez elle renvoie un nombre aléatoire entre 0 et 1. J'ai donc fait la fonction rand() qui renvoie un nombre aléatoire entre le minimum et le maximum (les deux paramètres).
Il y a aussi la fonction int() que vous ne connaissez pas. Elle renvoie l'entier du nombre qui lui est passé en paramètre, c'est-à-dire que 12.0001 devient 12 et que 12.9999 devient 12 (ce n'est pas une virgule qu'il faut utiliser pour les nombres décimaux mais un point, c'est un langage anglais).
Il y a aussi une petite instruction qui pourrait rendre votre programme plus joli : cls.
Elle s'utilise toute seule sans rien après ni avant (sur la même ligne bien sûr) et elle efface la console.
Bon, maintenant, voici comment peut se présenter votre programme (c'est comme ça que ce présente le mien mais vous pouvez le présenter comme bon vous semble tant qu'il est fonctionnel).
Lorsque l'on lance le programme :
Code :
----------- Jeu du Plus ou Moins -----------
--- Menu ---
1 - Nombre de 1 à 99 (compris)
2 - Nombre de 1 à 999 (compris)
3 - Nombre de 1 à 9999 (compris)
4 - Quitter
Votre choix :
Lorsque l'on a choisi et qu'on appuie sur Entrée :
Code :
Entrez un nombre compris entre 1 et 99 :
(Le dernier nombre est le maximum donc il change selon le choix fait précédemment)
Lorsque l'on a un peu joué :
Code :
Entrez un nombre compris entre 1 et 99 : 50
C'est plus que 50
Entrez un nombre compris entre 1 et 99 : 75
C'est plus que 75
Entrez un nombre compris entre 1 et 99 : 87
C'est moins que 87
Entrez un nombre compris entre 1 et 99 :
Et lorsque l'on a trouvé :
Code :
Bravo le nombre mystère était bien 78
Vous avez réussi en 5 coups
Voila, vous êtes désormais parfaitement capable de créé ce petit programme.
A vous de jouer !
Bonne chance !
===========
===========
===========
===========
===========
===========
===========
=======================
===================
===============
===========
=========
=======
=====
===
=
Coups de pouce
Ceci n'est que pour ceux qui ne parviennent pas à faire ce jeu. Avant de dire que vous n'y arrivez pas, essayez!

Voici un algorigramme.
C'est votre programme sous forme de schéma :
Caché:

Ça devrait bien vous aider
===========
===========
===========
===========
===========
===========
===========
=======================
===================
===============
===========
=========
=======
=====
===
=
Correction
C'est l'heure!
Tout le monde rend les copies.
Les trainards au fond on se dépêche de finir!
Voila la correction.
Il se peut très fortement que votre code ne ressemble pas au mien, et c'est normal car il y a une infinité de façon de faire la même chose.
Code VB :
'------------------------------------------------------------' ' PROGRAMME PRINCIPALE ' '------------------------------------------------------------' 'On met un menu do cls 'On efface la console print "----------- Jeu du Plus ou Moins -----------" print " --- Menu --- " print " 1 - Nombre de 1 à 99 (compris)" print " 2 - Nombre de 1 à 999 (compris)" print " 3 - Nombre de 1 à 9999 (compris)" print " 4 - Quitter" input "Votre choix : "; choix choix = int(choix) ' Pour les petits malins qui voudraient entré un choix à virgule loop until choix >= 1 and choix <= 4 ' Tant que le choix n'est pas dans le menu on recommence nombreMystere = 0 ' On initialise nombreMystere qui contiendra ... le nombre mystère min = 1 select case choix case 1 max = 99 case 2 max = 999 case 3 max = 9999 case 4 end end select nombreMystere = rand(min,max) nombreEntre = 0 ' Le nombre que le joueur à entré coups = 0 ' Le nombre de coups que le joueur à fait cls 'On efface la console do coups = coups + 1 input "Entrez un nombre compris entre ";min;" et ";max;" : ";nombreEntre ' Demande du nombre print 'On saute 2 lignes pour aérer print if nombreEntre > nombreMystere then print "C'est moins que ";nombreEntre ' Si le nombre mystère est plus petit if nombreEntre < nombreMystere then print "C'est plus que ";nombreEntre ' Si le nombre mystère est plus grand loop while nombreEntre <> nombreMystere cls 'On efface la console print "Bravo le nombre mystère était bien ";nombreEntre print "Vous avez réussi en ";coups;" coups" end 'fin du programme '------------------------------------------------------------' ' LES FONCTIONS ' '------------------------------------------------------------' 'Renvoie un nombre aléatoire compris entre min et max function rand(min,max) rand = int(rnd(1)*(max-min+1))+min end function
Je ne dit pas que mon code est le meilleur, mais il fonctionne et j'ai essayé de prévoir l'imprévisible, c'est-à-dire qu'il y aura toujours des utilisateurs qui s'amuseront à ne pas faire ce qui est demandé par le programme, et donc ce qui n'est pas prévu. Par exemple au niveau du menu, si on ne teste pas si l'option choisie est valide ça pourrais provoquer des bugs. Dans mon programme, par exemple, si je ne vérifiais pas la validité du choix et que l'utilisateur entrais 6, le nombre mystère serai zéro et la phrase pour entrer le chiffre ressemblerais à ça :
Code :
Entrez un nombre compris entre 1 et 0 :
Vous avez peut-être aussi remarqué la fonction rand() à la fin du programme. J'ai pour habitude de toujours bien séparer les fonctions et les Sub du programme principale et aussi de mettre un très court descriptif de la fonction. Je trouve ça beaucoup plus lisible.
Autrement rien de particulier sauf l'utilisation de boucles do..loop until et do..loop while. Le code est bien commenté mais si vous avez un problème avec ce code veuillez me prévenir par MP. Et si vous ne comprenez pas pourquoi votre code ne fonctionne pas allez demander de l'aide sur le forum, les membres se ferons un joie de vous aider.
Voila ce premier TP terminé tout comme cette première partie
C'est tout, et n'oubliez pas, c'est en forgeant qu'on devient forgerons et donc c'est en programment qu'on devient programmeur