Jeux de devinette
Énoncé du jeu
Écrire un programme qui choisit aléatoirement un nombre dans un intervalle donné, puis demande à l’utilisateur de deviner ce nombre.
- Si l’utilisateur trouve le nombre mystère, le programme affiche gagné
- Si l’utilisateur ne trouve pas le nombre mystère, le programme affiche essayez encore. Et affiche une aide en encadrant le nombre mystère dans un intervalle plus restreint.
Algorithme de résolution
Pour aider le joueur à trouver la bonne réponse, on lui donne une indication qui nécessite de résoudre une équation de premier degré. On lui dit que s’il ajoute deux fois le nombre mystère à son nombre, il doit trouver un nombre calculé par le programme et qui est égal à 2*nMyst + nUtil.
Instructions nécessaires pour résoudre le problème
La fonction randint()
Tout d’abord on besoin d’importer une bibliothèque qui permet de donner des nombres aléatoires. Cette bibliothèque s’appelle random. Et à partir de cette bibliothèque on importe la fonction randint().
La fonction randint renvoie un nombre aléatoire dans un intervalle donné. Cette fonction prend deux arguments, le premier correspond à la borne mini de l’intervalle et le deuxième correspond à la borne maxi de l’intervalle.
La fonction print()
Cette fonction est très utilisée dans la programmation python, elle permet d’afficher tout ce qu’elle prend en argument. Elle sera utilisée principalement pour afficher des messages à l’utilisateur (le joueur).
La fonction input()
La fonction input() permet d’interagir avec l’utilisateur, elle sera utilisée pour lui demander de donner une proposition du nombre mystère.
La fonction int()
Nous avons vu précédemment que cette fonction renvoie une chaine de caractère, il ne faut donc pas oublier de convertir cette chaine de caractère en nombre entier. La fonction qui permet de faire cette conversion est int().
Les tests conditionnels
Ces tests sont nécessaires pour ce type d’exercice. On utilisera les instructions if, elif et else pour comparer les nombres donnés par le joueur et le nombre mystère.
Étapes de résolution du problème
Voici les étapes de création du jeu devinette (deviner un nombre)
- Importer de la bibliothèque random la fonction randint()
- Créer une variable et lui affecter un nombre qui correspondra à la borne maxi de l’intervalle
- Créer une variable qui correspond au nombre mystère en utilisant la fonction randint()
- Demander au joueur de faire une proposition pour deviner le nombre mystère.
- Tester si le nombre proposé et égal au nombre mystère
- Si le test est vrai alors afficher bravo le nombre est trouvé
- Si le nombre est supérieur (ou inférieur) le dire au joueur et lui demander de faire une deuxième proposition avec une indication qui permet de trouver le nombre mystère en résolvant une équation de premier degré
- Si malgré les indications le joueur ne trouve pas le nombre mystère, lui afficher le nombre non trouvé et le lui afficher.
Programme du jeu de devinette de nombre
from random import randint
nbrMax = 20
nMyst = randint(1,nbrMax)
print("J'ai choisi un nombre mystère entre 1 et ",nbrMax, " à toi de le deviner")
nUtil = int(input("Propose un nombre : "))
if nUtil < nMyst:
print("Le nombre est trop petit")
print("Voici une indication")
print("Si tu ajoute 2 fois mon nombre à ton nombre tu dois trouver", 2*nMyst + nUtil)
nUtil2 = int(input("Propose un autre nombre : "))
elif nUtil > nMyst:
print("Le nombre est trop grand")
print("Voici une indication")
print("Si tu ajoute 3 fois mon nombre à ton nombre tu dois trouver", 3 * nMyst + nUtil)
nUtil2 = int(input("Propose un autre nombre : "))
else:
print("Félicitations ! Tu as trouvé ",nMyst," mon nombre mystère.")
nUtil2 = 99 + nbrMax
if nUtil2 == nMyst and nUtil != nMyst :
print("Félicitations ! Tu as trouvé ", nMyst, " mon nombre mystère en 2 essais!")
elif nUtil2 != nMyst and nUtil2 != 99 + nbrMax:
print("Dommage! tu n'as pas trouvé.")
print("Mon nombre mystère est : ",nMyst,".")
Simulation du programme
Voici deux simulations de ce programme :
Bonjour un petit programme sympa qui je vais utiliser avec mes élèves de 2nde ! merci
Bonjour,
Avec plaisir.
Et bon courage avec vos élèves de seconde ça ne doit pas être facile au lycée en ce moment
Très sympa ! 🙂 Une version améliorée du « plus ou moins » que j’ai pratiqué lors de mon apprentissage de ce langage. Merci pour l’exercice !
oui exactement, et c’est très pratique pour réviser avec ses enfants en ces temps difficile de confinement et déconfinement 🙂