Pour ceux qui ne le savent pas, le Pendu est un jeu de devinettes de mots qui se joue traditionnellement avec un stylo et du papier. Un mot est choisi secrètement et la seule chose connue à son sujet est le nombre de lettres qu'il contient. Le joueur devine ensuite une lettre et, si elle est dans le mot, sa position est révélée. Les suppositions incorrectes comptent contre le joueur. Si vous devinez le mot que vous gagnez, faites trop de mauvaises suppositions et la partie est terminée.
Bien, maintenant nous savons tous ce que le jeu implique, voyons à quoi cela pourrait ressembler lorsqu'il est joué en Python.
Word: --- Wrong guesses: Guess a letter > a Word: -a- Wrong guesses: Guess a letter > g Word: -a- Wrong guesses: g Guess a letter > t Word: -at Wrong guesses: g Guess a letter > c Word: cat Well done! You guessed the word with 1 wrong guesses.
Démarrons un nouveau programme Python pour créer ce jeu. Nous aurons besoin d'un mot à deviner et d'un moyen de suivre les suppositions correctes et incorrectes.
word = "something" guessed_letters = [] incorrect_letters = []
C'est quoi ces crochets ? C'est Python qui parle pour une nouvelle liste. Une liste est une variable qui peut stocker plusieurs valeurs. Dans ce cas, nous allons stocker les lettres dans les listes, mais Python vous permettra d'y mettre n'importe quoi.
Notre jeu sera essentiellement une boucle qui montre au joueur les parties du mot devinées jusqu'à présent, puis lui demande une autre réponse. Nous pouvons utiliser une boucle while pour implémenter cela. Mais quelle devrait être notre condition pour mettre fin à la boucle ? Eh bien, il y a deux raisons pour lesquelles nous voudrions mettre fin au jeu :
La première condition est remplie lorsque le nombre de lettres dans la liste devines_letters est le même que le nombre de lettres dans le mot. Notre boucle doit donc s'exécuter alors que ce n'est pas le cas. En Python, cela peut être écrit comme len(guessed_letters) != len(word). La fonction len() vous indique la longueur d'une liste ou d'une chaîne.
La deuxième condition est remplie lorsque le nombre de lettres dans la liste incorrect_letters est supérieur au nombre maximum de suppositions autorisées. Notre boucle doit donc également s'exécuter alors que ce n'est pas le cas. En Python, cela peut être écrit comme len(incorrect_letters)
En résumé, notre boucle while commence comme ceci.
# Game loop. MAX_WRONG_GUESSES = 5 while len(guessed_letters) != len(word) and len(incorrect_letters)Dans notre boucle, nous devrons faire quatre choses :
- Montrez le mot au joueur.
- Afficher la liste des mauvaises suppositions.
- Demandez au joueur de deviner.
- Enregistrez si la supposition est correcte ou incorrecte.
Abordons-les dans l'ordre.
Montrer le mot
Nous devons montrer le mot au joueur, mais seules les lettres qu'il a correctement devinées doivent être révélées. Le reste des lettres doit être remplacé par un tiret. Écrivons une fonction qui fait cela pour nous. Il faudra deux arguments, le mot à afficher et une liste de lettres correctement devinées.
def show_word(word, letters): print("Word: ", end="") for letter in word: if letter in letters: print(letter, end="") else: print("-", end="") print()Nous parcourons chaque lettre du mot en utilisant une boucle for. On vérifie ensuite si la lettre est dans la liste des lettres à l'aide de l'opérateur in. Si c'est le cas, nous l'imprimons. Sinon, nous imprimons un tiret à la place. Nous utilisons l'argument end="" dans les appels d'impression pour empêcher l'impression d'une nouvelle ligne.
Montrer les mauvaises suppositions
Écrivons une autre fonction pour afficher les mauvaises suppositions. Celui-ci est beaucoup plus simple que le précédent. Il prend un seul argument, la liste des fausses suppositions, et utilise à nouveau une boucle for pour imprimer chacune d'elles.
def show_wrong_guesses(guesses): print("Wrong guesses: ", end="") for letter in guesses: print(letter, end="") print()Obtenir l'opinion du joueur
Notre prochaine fonction va demander au joueur de deviner. Pour nous assurer que le joueur tape réellement quelque chose, nous allons utiliser une boucle while. Nous continuerons à leur demander une supposition jusqu'à ce qu'ils en saisissent une. Enfin, une supposition ne devrait être qu'une seule lettre, nous ne renvoyons donc que le premier caractère qu'ils saisissent.
def get_letter(): letter = "" while letter == "": letter = input("Guess a letter > ") return letter[0]Enregistrer la supposition
Une fois que nous avons une lettre du joueur, nous pouvons décider laquelle de nos deux listes nous devons également l'ajouter. Si la lettre est dans le mot, c’est une bonne supposition. Nous pouvons l'ajouter à la liste Guesed_letters en utilisant la méthode append(). Si ce n'est pas dans le mot, il doit être ajouté à la liste incorrect_letters. Mais nous devrions également vérifier si la lettre a déjà été devinée auparavant. Nous faisons cela en vérifiant s'il s'agit d'une des listes avec l'opérateur in. (De cette façon, chaque supposition n'est enregistrée qu'une seule fois.)
if letter in word and letter not in guessed_letters: guessed_letters.append(letter) elif letter not in incorrect_letters: incorrect_letters.append(letter)Finir le jeu
Enfin et surtout, nous devons afficher un message approprié au joueur à la fin de la boucle de jeu. Selon qu’ils ont deviné le mot ou non, le message sera celui du succès ou de l’échec. Comment savoir s’ils ont bien deviné le mot ? Le nombre de lettres dans la liste Guesed_letters sera de la même longueur que le mot.
# End of game message. if len(guessed_letters) == len(word): show_word(word, guessed_letters) print(f"Well done! You guessed the word with {len(incorrect_letters)} wrong guesses.") else: print(f"Too many wrong guesses! The word was '{word}'")C'est ça! Nous avons un jeu complet de Hangman. Pour rendre le jeu plus difficile ou plus facile, modifiez le nombre de mauvaises suppositions autorisées.
Liste complète des programmes
def show_word(word, letters): print("Word: ", end="") for letter in word: if letter in letters: print(letter, end="") else: print("-", end="") print() def show_wrong_guesses(guesses): print("Wrong guesses: ", end="") for letter in guesses: print(letter, end="") print() def get_letter(): letter = "" while letter == "": letter = input("Guess a letter > ") return letter[0] word = "something" guessed_letters = [] incorrect_letters = [] # Game loop. MAX_WRONG_GUESSES = 5 while len(guessed_letters) != len(word) and len(incorrect_letters)
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3