Jogo da forca em Python
Publicado por Artur Rabelo (última atualização em 03/07/2020)
[ Hits: 6.401 ]
Homepage: https://github.com/artrabelo
Minha implementação do famoso jogo da forca ("hangman") como exercício na linguagem Python. O jogo escolhe a palavra secreta de um arquivo "wordlist.txt" contendo palavras em cada linha.
#!/usr/bin/python3
from random import choice
import os
# Color dictionary for aesthetic use
colors = {'red': '\033[1;31m',
'green': '\033[1;32m',
'blue': '\033[1;36m',
'gray': '\033[1;90m',
'reset': '\033[m'}
def get_wordlist():
# Choose secret word from a wordlist file in the same directory as the script.
# If a wordlist file is not provided, the game exits.
try:
with open(os.path.join(os.path.dirname(__file__), 'wordlist.txt')) as w:
lines = w.readlines()
words = [line.strip().upper() for line in lines]
secret = choice(words)
return secret
except IOError:
return 'ERRO: Nenhum dicionário foi encontrado.'
def hide(word, masked, hack=False):
# Print blanks and guessed letters
for position, letter in enumerate(word):
if masked[position] == letter:
print(f'{colors["green"]}{letter}{colors["reset"]}', end=' ')
elif word[position] == ' ': # This is a quick workaround (pt-BR: "gambiarra")
masked[position] = letter # for open compound words.
print('', end='')
else:
print('_', end=' ')
print('', end='')
print()
# Game will print the secret if hack mode is on
if hack:
for letter in word:
print(f'{colors["gray"]}{letter.lower()}{colors["reset"]}', end=' ')
print()
def play(secret):
# Set initial variables
hidden = ['_' for letter in secret]
guessed_letters = []
turns = 6
# Game begins
while turns > 0:
hide(secret, hidden)
# Player wins if words match
if ''.join(secret) == ''.join(hidden):
print('Parabéns, você acertou!')
break
print()
guess = input('Tente adivinhar qual é a palavra secreta. Digite uma letra: ').strip().upper()
if guess.isalpha() and len(guess) == 1:
if guess in guessed_letters:
print('Você já jogou esta letra.')
else:
if guess in secret:
for position, letter in enumerate(secret):
if guess == letter:
hidden[position] = letter
else:
turns -= 1
print(f'Errado! {colors["red"]}{guess.upper()}{colors["reset"]} não está na palavra.')
guessed_letters.append(guess)
if turns > 0:
print(f'Letras jogadas: {colors["blue"]}{" - ".join(guessed_letters)}{colors["reset"]}')
print(f'Você tem {colors["red"]}{turns}{colors["reset"]} chance(s) restantes.')
else:
print('Você deve digitar uma letra.')
print()
else:
print(f'Você perdeu! A resposta correta era {colors["red"]}{secret}{colors["reset"]}')
def main():
word = get_wordlist()
play(word)
if __name__ == '__main__':
main()
Primeiro código em python que escrevi acompanhando aula do google.
IA Turbina o Desktop Linux enquanto distros renovam forças
Como extrair chaves TOTP 2FA a partir de QRCODE (Google Authenticator)
Linux em 2025: Segurança prática para o usuário
Desktop Linux em alta: novos apps, distros e privacidade marcam o sábado
IA chega ao desktop e impulsiona produtividade no mundo Linux
Atualizando o Fedora 42 para 43
Como saber se o seu e-mail já teve a senha vazada?
Como descobrir se a sua senha já foi vazada na internet?
Programa fora de escala na tela do pc (40)
\Boot sem espaço em disco (Fedora KDE Plasma 42) (5)
Preciso recuperar videos *.mp4 corrompidos (0)









