Comment créer un jeu de devinettes de nombres en Python ?
Création d'un jeu de devinette en Python
L'objet de cet article est sans doute déjà clair pour vous. Vous avez probablement déjà une idée de la mécanique de l'estimation de nombres et vous cherchez à la concrétiser en utilisant Python.
Découvrons ensemble comment élaborer un jeu de devinettes à partir de zéro.
Concept du Jeu
Le principe est simple : l'utilisateur doit deviner un nombre aléatoire généré entre 1 et 100. C'est tout le défi.
Le jeu est-il vraiment si simple ?
Absolument.
Cependant, il est essentiel de guider l'utilisateur dans sa quête du nombre mystère. Nous devons donc lui fournir des indices. Ces indices indiqueront si la proposition actuelle est inférieure ou supérieure au nombre à découvrir, permettant ainsi à l'utilisateur d'ajuster sa stratégie.
Il est possible de pimenter l'expérience en ajoutant des fonctionnalités additionnelles, comme un nombre maximal de tentatives, une plage de nombres plus étendue, ou même un compte à rebours.
L'objectif initial est de construire une version fonctionnelle de base. Nous pourrons ensuite enrichir le jeu avec les options mentionnées. Commençons par la version de base dans cette section, puis nous explorerons les améliorations possibles.
Je vous encourage à tenter de créer le jeu par vous-même, sans reproduire aveuglément le code. Pour cela, je vais d'abord exposer l'algorithme. Cela vous permettra de coder par vous-même ou de comprendre le code plus rapidement.
Examinons ensemble l'algorithme nécessaire pour bâtir ce jeu de devinettes.
Algorithme Détaillé
Il est crucial de bien saisir l'algorithme avant de passer à la phase de codage.
- Définissez les limites de l'intervalle de nombres. Par défaut, il s'agit de 1 à 100, mais vous pouvez personnaliser cette plage.
- Générez un nombre entier aléatoire à l'intérieur de l'intervalle (1-100).
- Initiez le jeu en affichant un message à l'utilisateur, tel que "Devinez un nombre entre X et Y". Vous pouvez adapter ce message à votre guise.
- Initialisez une variable à 0. Cette variable servira à suivre le nombre de tentatives réalisées par l'utilisateur pour deviner correctement le nombre.
- Créez une boucle infinie.
- Demandez à l'utilisateur de proposer un nombre.
- Si le nombre proposé est identique au nombre aléatoire, félicitez l'utilisateur par un message de votre choix, par exemple : « Bravo ! Vous avez trouvé en 5 tentatives ! ».
- Interrompez la boucle après avoir félicité l'utilisateur.
- Si le nombre proposé est inférieur au nombre aléatoire, avertissez l'utilisateur avec un message tel que « Votre nombre est trop petit », ou une formule similaire.
- Si le nombre proposé est supérieur au nombre aléatoire, avertissez l'utilisateur avec un message tel que « Votre nombre est trop grand », ou une formule similaire.
- Enfin, incrémentez le compteur de tentatives de l'utilisateur.
Cet algorithme devrait vous donner une idée claire du code à écrire. Pas d'inquiétude si le code complet ne se dessine pas encore. L'essentiel est de bien comprendre l'algorithme présenté ci-dessus.
Il est maintenant temps de passer à la pratique. Plongeons sans plus attendre dans le code.
Le Code Source
Avez-vous essayé d'écrire le code ?
Si oui et que vous avez réussi, c'est parfait. Examinez le code et assurez-vous de bien le comprendre afin d'approfondir vos connaissances.
Si vous n'avez pas encore écrit le code, ne vous inquiétez pas. Prenez le temps de l'étudier et de le comprendre. Ensuite, essayez de le modifier et de le réécrire à votre manière pour mieux assimiler les concepts.
Voici donc le code :
import random
class JeuDevinetteNombre:
def __init__(self):
## Définir l'intervalle
self.BORNE_MIN = 1
self.BORNE_MAX = 100
## Méthode pour générer un nombre aléatoire
def obtenir_nombre_aleatoire(self):
return random.randint(self.BORNE_MIN, self.BORNE_MAX)
## Méthode pour démarrer le jeu
def commencer(self):
## Générer le nombre aléatoire
nombre_aleatoire = self.obtenir_nombre_aleatoire()
print(f"Devinez le nombre aléatoire entre {self.BORNE_MIN} et {self.BORNE_MAX}")
## Le coeur du jeu
tentatives = 0
while True:
nombre_utilisateur = int(input("Entrez votre proposition : "))
if nombre_utilisateur == nombre_aleatoire:
print(f"-> Bravo ! Vous avez trouvé en {tentatives + 1} tentative{'s' if tentatives > 0 else ''} !")
break
elif nombre_utilisateur < nombre_aleatoire:
print("-> Votre nombre est inférieur au nombre secret")
else:
print("-> Votre nombre est supérieur au nombre secret")
tentatives += 1
## Instanciation et lancement du jeu
jeu_devinette = JeuDevinetteNombre()
jeu_devinette.commencer()
Ce code met en évidence plusieurs points clés :
- L'intervalle est défini dans la méthode __init__, ce qui permet de le réutiliser facilement dans les méthodes de la classe.
- Il est facile de modifier l'intervalle à un seul endroit, et cela se répercutera sur toute l'application.
- Une méthode distincte est utilisée pour générer le nombre aléatoire, ce qui respecte le principe de « séparation des préoccupations ». Dans cet exemple, la méthode est courte, mais elle pourrait devenir plus complexe à l'avenir.
- Enfin, l'ensemble du code est structuré en classe, regroupant toutes les méthodes liées au jeu. Cette approche facilite sa réutilisation dans d'autres applications.
Ces choix de conception visent à écrire un code propre, facile à comprendre, même après plusieurs années.
Voici un exemple d'exécution du jeu :
$ python jeu_devinette.py Devinez le nombre aléatoire entre 1 et 100 Entrez votre proposition : 50 -> Votre nombre est inférieur au nombre secret Entrez votre proposition : 75 -> Votre nombre est inférieur au nombre secret Entrez votre proposition : 90 -> Votre nombre est supérieur au nombre secret Entrez votre proposition : 85 -> Votre nombre est supérieur au nombre secret Entrez votre proposition : 80 -> Bravo ! Vous avez trouvé en 5 tentatives !
Je suppose que Python est installé sur votre système pour que vous puissiez tester le code ci-dessus.
Fonctionnalité Additionnelle
Nous allons maintenant ajouter une limite au nombre de tentatives possibles pour deviner le nombre. Si l'utilisateur ne parvient pas à deviner le nombre dans le délai imparti, il perdra la partie.
Comment mettre en place cette fonctionnalité ?
C'est simple, il suffit de suivre ces deux étapes :
- Définir un nombre maximal de tentatives allouées à l'utilisateur.
- Avant de demander une nouvelle proposition à l'utilisateur, vérifier s'il lui reste des tentatives. Si ce n'est pas le cas, mettre fin à la partie.
Le code suivant permet de concrétiser cette fonctionnalité :
- Ajouter cette ligne à la méthode __init__ :
self.MAX_TENTATIVES = 10
- Ajouter la condition suivante avant de demander une nouvelle proposition à l'utilisateur :
if tentatives == self.MAX_TENTATIVES:
print("-> Dommage ! Vous avez perdu. Vous n'avez plus de tentatives.")
Testez le jeu en ne devinant pas le bon nombre. Vous devriez obtenir un résultat similaire à celui-ci :
$ python jeu_devinette.py Devinez le nombre aléatoire entre 1 et 100. Vous avez 10 tentatives pour deviner. Entrez votre proposition : 1 -> Votre nombre est inférieur au nombre secret Entrez votre proposition : 2 -> Votre nombre est inférieur au nombre secret Entrez votre proposition : 3 -> Votre nombre est inférieur au nombre secret Entrez votre proposition : 4 -> Votre nombre est inférieur au nombre secret Entrez votre proposition : 5 -> Votre nombre est inférieur au nombre secret Entrez votre proposition : 6 -> Votre nombre est inférieur au nombre secret Entrez votre proposition : 7 -> Votre nombre est inférieur au nombre secret Entrez votre proposition : 8 -> Votre nombre est inférieur au nombre secret Entrez votre proposition : 9 -> Votre nombre est inférieur au nombre secret Entrez votre proposition : 10 -> Votre nombre est inférieur au nombre secret -> Dommage ! Vous avez perdu. Vous n'avez plus de tentatives.
Félicitations ! Nous avons ajouté une fonctionnalité supplémentaire à notre jeu. Mais ce n'est pas tout. Vous pouvez encore l'améliorer en ajoutant d'autres options pour rendre l'expérience plus intéressante. C'est maintenant à vous de jouer : lâchez votre créativité ! 😊.
Conclusion
Nous avons créé un jeu de devinette simple mais fonctionnel. C'est maintenant à votre tour de penser aux jeux auxquels vous jouiez dans votre enfance. Essayez de les recréer en utilisant vos connaissances en programmation et partagez-les avec vos amis. Il est possible de numériser un grand nombre de nos jeux d'enfance.
N'hésitez pas à explorer les IDE Python ainsi que les compilateurs en ligne pour exécuter votre code.
Bon codage ! 😊
Si vous aimez les jeux de mots, voici une suggestion pour vous améliorer à Wordle.
Avez-vous apprécié la lecture de cet article ? N'hésitez pas à le partager !