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

 
Nous voila à la fin de la première partie, vous savez désormais tout ce qu'il faut savoir pour faire ce TP
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


 
Cette page a été consultée 4726 fois