Vous vous apprêtez à lire un tutoriel rédigé par un membre de ce site. Malgré tout le soin que ce membre a pu apporter au tutoriel, nous ne pouvons pas garantir que les informations contenues sur cette page sont exactes à 100%. Merci de garder cela en tête lorsque vous lirez cette page ;o)
Le jeu de Plus ou Moins est un des jeux les plus présentés en programmation.
Son principe est très simple. Vous devrez trouver un nombre que l'ordinateur a tiré au hasard. A chaque essai, il vous dira si le nombre que vous avez donné est supérieur ou inférieur au nombre caché. Le but du jeu étant de trouver ce nombre caché le plus vite possible.
Code : Console | Entrez un nombre compris entre 0 et 100 : 50
Le nombre cache est plus grand
Entrez un nombre compris entre 0 et 100 : 75
Le nombre cache est plus grand
Entrez un nombre compris entre 0 et 100 : 85
Le nombre cache est plus petit
Entrez un nombre compris entre 0 et 100 : 80
Vous avez trouve le nombre cache ! |
Vous savez demander à Python de vérifier un nombre par rapport à un autre, vous savez utiliser les boucles, comment sortir des boucles...
Mais comment tirer un nombre au hasard !
Rassurez-vous, c'est très simple (et heureusement !

)
Nous allons utiliser une des forces de Python : les modules. Nous n'allons pas détailler l'importation des modules, nous le ferons plus tard. Sachez juste qu'un module est comme un carton que nous allons déballer, pour sortir l'outil dont nous avons besoin.
Ici, nous allons avoir besoin d'ouvrir le carton
random, dont nous n'allons sortir qu'une seule fonction :
randrange.
Regardez comment faire :
Code : Python1 | from random import randrange
|
C'est très simple.
from indique le "carton" d'où on va
importer la fonction
randrange.
Après, pour utiliser cette fonction que l'on vient de donner au programme, il suffit de l'appeler :
Code : Python
Nous n'avions jamais rencontré ce cas pour l'instant : randrange est une fonction qui prend deux arguments. C'est à dire que, pour qu'elle fonctionne, vous devez lui donner deux valeurs dans les parenthèses (ici, deux entiers). Pour les séparer, on utilise la virgule (voilà pourquoi elle est remplacée par le point dans les "nombres à virgules"

). Ici, Python va tirer un nombre au hasard entre 0 et 100 et l'attribuer à la variable a.
On peut lui demander de tirer un nombre au hasard entre 100 et 150, par exemple :
Code : Python
Ça marche aussi avec des variables :
Code : Python1
2
3
4 | a = 25
b = 2729
nombre = randrange(a, b)
print nombre
|
Voilà. Vous savez maintenant tout ce qu'il faut savoir pour réaliser ce Tp.
Avant de foncer tête baissée et de coder (ce qui est voué à l'échec), il faut d'abord définir précisément ce que va faire notre programme.
Par quelles étapes va passer notre programme ? Comment fera-t-il ? Que de questions !
- Premièrement, notre programme devra tirer un nombre au hasard.
- On va répéter ces actions tant que l'utilisateur n'a pas trouvé le bon nombre
- Il demande à l'utilisateur un nombre
- Si le nombre entré est supérieur au nombre caché, on l'indique à l'utilisateur
- Si le nombre entré est inférieur au nombre caché, on l'indique à l'utilisateur
Vous savez tout ce qu'il faut savoir, vous savez ce que va faire le programme, il est temps de passer au codage !
Vous n'y arrivez pas ? Recommencez encore une fois !

Vous n'y arrivez toujours pas ? Prenez un bout de papier et marquez l'algorithme du programme avec vos mots à vous. Et recommencez

Vous n'y arrivez encore pas ? Je vois déjà vos yeux bouffis à minuit en train d'essayer de coder ce jeu.

Essayez demain, la tête froide, et tout sera plus clair (généralement, inutile de vous énerver devant un programme : ça ne fait pas avancer le schmilblick. Allez prendre l'air !)
J'espère que vous avez au moins réfléchi à ce petit programme, que vous avez essayé de coder quelque chose, ou que vous y êtes arrivé.
Parce que, quoi qu'il en soit, il est temps de passer à la correction !
Secret (cliquez pour afficher)Code : Python 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 | # On importe la fonction
from random import randrange
# On tire un nombe au hasard entre 0 et 100
nombre_cache = randrange(0, 100)
nombre_utilisateur = -1
# Tant que l'utilisateur n'a pas trouve le nombre cache
while nombre_utilisateur != nombre_cache:
# On demande a l'utilisateur un nombre
nombre_utilisateur = input("Entrez un nombre compris entre 0 et 100 : ")
# On compare avec le nombre cache
if nombre_utilisateur > nombre_cache:
print "Le nombre cache est plus petit"
elif nombre_utilisateur < nombre_cache:
print "Le nombre cache est plus grand"
print "Vous avez trouve le nombre cache !"
|
Mais, pourquoi affecter à la variable nombre_utilisateur -1 ?
C'est une ruse de programmeur

On demande à Python de tirer un nombre au hasard entre 0 et 100. On ne rentre dans la boucle que si nombre_utilisateur est différent de nombre_cache. or, si par le plus grand des hasards, ces deux variables sont égales, on nous dit qu'on a trouvé le nombre caché !
Il faut donc donner à nombre_utilisateur une valeur dont on est sûr qu'elle ne sera pas atteinte en tirant le nombre au hasard
Vous voilà avec un jeu de Plus ou Moins tout à fait respectable.
Mais vous pouvez certainement l'améliorer !
- Ajoutez donc à votre jeu un compteur. Code : Console
| Vous avez trouve le nombre cache en 8 coups ! |
- Demandez à l'utilisateur s'il veut recommencer le jeu.
- Demandez donc à l'utilisateur la valeur maximale que peut prendre le nombre mystère. Cela pourra augmenter (ou bien diminuer) la difficulté.
Vous n'arrivez pas à demander au joueur s'il veut rejouer ?
Voici une correction spécialisée
Secret (cliquez pour afficher)Code : Python 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 | # On importe la fonction
from random import randrange
recommencer = 0 # 0 si on veut recommencer, 1 si on veut arreter
while recommencer == 0:
# Tant que l'utilisateur n'a pas trouve le nombre cache
# On tire un nombe au hasard entre 0 et 100
nombre_cache = randrange(0, 100)
nombre_utilisateur = -1
while nombre_utilisateur != nombre_cache:
# On demande a l'utilisateur un nombre
nombre_utilisateur = input("Entrez un nombre compris entre 0 et 100 : ")
# On compare avec le nombre cache
if nombre_utilisateur > nombre_cache:
print "Le nombre cache est plus petit"
elif nombre_utilisateur < nombre_cache:
print "Le nombre cache est plus grand"
print "Vous avez trouve le nombre cache !"
print "Voulez-vous recommencer ?"
recommencer = input("0. Oui\n1. Non\n")
|
Toute l'astuce est dans la grande boucle qui entoure le code que nous avons écrit avant

En effet, tant que l'utilisateur rentre 0, cette grande boucle est exécutée. Elle est donc utile pour vérifier s'il veut rejouer (s'il rentre 0 à la fin de la boucle, la condition n'est plus remplie, et tout se termine)
Stop ! Vous croyez que je ne vous avais pas vus ? Vous êtes sur le point de passer au chapitre suivant sans avoir réellement fini celui là ? C'est très malhonnête
Êtes vous réellement prêts pour la suite, vous qui lisez ce cours ? Il n'y a que vous qui puissiez le savoir. Vérifions nos acquis :
- Vous savez afficher du texte avec print
- Vous savez séparer les instructions de votre code ligne par ligne
- Vous savez utiliser des variables pour stocker vos données
- Vous savez lire ce que l'utilisateur entre (tant que c'est un nombre) avec input
- Vous savez utiliser une condition pour vérifier que l'utilisateur a bien rentré le bon nombre...
- ...donc vous savez faire une comparaison entre deux variables
- Vous savez faire des boucles qui s'exécutent tant qu'une certaine condition n'est pas remplie
Bien, bien, pas mal... Si tout ce qui est là ne vous pose réellement aucun problème, vous pouvez passer à la suite. Sinon, pourquoi ne pas relire ce qui vous semble difficile ?
De toute façon, je vous conseille de faire une pause, à ce stade, et de parler à d'autres personnes qui s'intéressent à la programmation, de leur poser des questions, d'essayer de faire
vos programmes... et de vous plonger dans le chapitre 8, qui n'est pas des moindres, avec ardeur et intelligence