"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Programando Hangman em Python

Programando Hangman em Python

Publicado em 2024-11-09
Navegar:921

Programming Hangman in Python

Para quem não sabe, Hangman é um jogo de adivinhação de palavras tradicionalmente jogado com papel e caneta. Uma palavra é escolhida secretamente e a única coisa que se sabe sobre ela é o número de letras que possui. O jogador então adivinha uma letra e, se estiver na palavra, sua posição é revelada. Suposições incorretas contam contra o jogador. Se você adivinhar a palavra que ganhou, faça muitos palpites errados e o jogo acaba.

Certo, agora que todos sabemos o que o jogo envolve, vamos ver como isso pode parecer quando jogado em 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.

Começando

Vamos iniciar um novo programa Python para fazer este jogo. Precisaremos de uma palavra para adivinhar e de uma maneira de controlar as suposições corretas e incorretas.

word = "something"
guessed_letters = []
incorrect_letters = []

O que há com colchetes? Isso é Python falando para uma nova lista. Uma lista é uma variável que pode armazenar mais de um valor. Neste caso vamos armazenar letras nas listas, mas Python permitirá que você coloque qualquer coisa lá.

Nosso jogo será essencialmente um loop que mostra ao jogador as partes da palavra adivinhadas até agora e, em seguida, pede outro palpite. Podemos usar um loop while para implementar isso. Mas qual deveria ser a nossa condição para encerrar o loop? Bem, há dois motivos pelos quais gostaríamos de encerrar o jogo:

  • O jogador adivinhou todas as letras corretas.
  • O jogador fez muitas suposições erradas.

A primeira condição é atendida quando o número de letras na lista adivinhadas_letras é igual ao número de letras na palavra. Portanto, nosso loop precisa ser executado enquanto esse não for o caso. Em Python, isso pode ser escrito como len(letras_adivinhadas) != len(palavra). A função len() informa o comprimento de uma lista ou string.

A segunda condição é atendida quando o número de letras na lista incorrect_letters é maior que o número máximo de tentativas permitidas. Portanto, nosso loop também precisa ser executado, embora não seja o caso. Em Python, isso pode ser escrito como len(letras_incorretas)

Juntando tudo, nosso loop while começa assim.

# Game loop.
MAX_WRONG_GUESSES = 5

while len(guessed_letters) != len(word) and len(incorrect_letters) 



Dentro do nosso loop precisaremos fazer quatro coisas:

  1. Mostre a palavra ao jogador.
  2. Mostra a lista de suposições erradas.
  3. Dê um palpite ao jogador.
  4. Registre se a estimativa está correta ou incorreta.

Vamos abordá-los em ordem.

Mostrando a palavra

Precisamos mostrar a palavra ao jogador, mas apenas as letras que ele adivinhou corretamente devem ser reveladas. O restante das letras deve ser substituído por um caractere de travessão. Vamos escrever uma função que faça isso para nós. Serão necessários dois argumentos, a palavra a ser mostrada e uma lista de letras adivinhadas corretamente.

def show_word(word, letters):
    print("Word: ", end="")
    for letter in word:
        if letter in letters:
            print(letter, end="")
        else:
            print("-", end="")
    print()

Fazemos um loop em cada letra da palavra usando um loop for. Em seguida, verificamos se a letra está na lista de letras usando o operador in. Se for, nós imprimimos. Caso contrário, imprimimos um travessão. Usamos o argumento end="" nas chamadas de impressão para impedir que uma nova linha seja impressa.

Mostrando as suposições erradas

Vamos escrever outra função para mostrar as suposições erradas. Este é muito mais simples que o anterior. É preciso um único argumento, a lista de suposições erradas, e usa um loop for novamente para imprimir cada uma delas.

def show_wrong_guesses(guesses):
    print("Wrong guesses: ", end="")
    for letter in guesses:
        print(letter, end="")
    print()

Obtendo o palpite do jogador

Nossa próxima função receberá uma estimativa do jogador. Para ter certeza de que o jogador realmente digita algo, usaremos um loop while. Continuaremos pedindo um palpite até que eles digitem um. Finalmente, um palpite deve ser apenas uma única letra, então retornamos apenas o primeiro caractere digitado.

def get_letter():
    letter = ""
    while letter == "":
        letter = input("Guess a letter > ")
    return letter[0]

Registrando o palpite

Assim que recebermos uma carta do jogador, podemos decidir qual das nossas duas listas devemos adicioná-la também. Se a letra estiver na palavra, é um palpite correto. Podemos adicioná-lo à listaguesed_letters usando o métodoappend(). Se não estiver na palavra, deverá ser adicionado à lista de letras_incorretas. Mas também devemos verificar se a letra já foi adivinhada antes. Fazemos isso verificando se é uma das listas com o operador in. (Dessa forma, cada palpite é registrado apenas uma vez.)

if letter in word and letter not in guessed_letters:
    guessed_letters.append(letter)
elif letter not in incorrect_letters:
    incorrect_letters.append(letter)

Terminando o jogo

Por último, mas não menos importante, precisamos exibir uma mensagem adequada ao jogador quando o loop do jogo terminar. Dependendo se adivinharam a palavra ou não, a mensagem será de sucesso ou fracasso. Como sabemos se eles adivinharam a palavra corretamente? O número de letras na lista adivinhadas_letras terá o mesmo comprimento da palavra.

# 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}'")

É isso! Temos um jogo completo de Hangman. Para tornar o jogo mais difícil ou mais fácil, altere o número de palpites errados permitidos.

Listagem completa do programa

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) 




          

            
        

Declaração de lançamento Este artigo foi reproduzido em: https://dev.to/robc79/programming-hangman-in-python-2c73?1 Se houver alguma violação, entre em contato com [email protected] para excluí-la
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3