Para o melhor entender o código elaborado, escrevi um texto, de forma resumida, explicando ele . Vou deixar abaixo, junto com meu código. Aceito correções e demais sugestões para o código/texto:
import random
def jogar():
imprime_mensagem_abertura()
palavra_secreta = carrega_palavra_secreta()
letras_acertadas = inicia_letrasacertadas(palavra_secreta)
enforcou = False
acertou = False
erros = 0
print(letras_acertadas)
while(not enforcou and not acertou):
chute = chama_chute()
if(chute in palavra_secreta):
seleciona_chute_correto(chute, letras_acertadas, palavra_secreta)
else:
erros += 1
desenha_forca(erros)
enforcou = erros == 7
acertou = "_" not in letras_acertadas
print(letras_acertadas)
if(acertou):
imprime_mensagem_vencedor()
else:
imprime_mensagem_perdedor(palavra_secreta)
print("Fim do jogo")
def desenha_forca(erros):
print(" _______ ")
print(" |/ | ")
if(erros == 1):
print(" | (_) ")
print(" | ")
print(" | ")
print(" | ")
if(erros == 2):
print(" | (_) ")
print(" | \ ")
print(" | ")
print(" | ")
if(erros == 3):
print(" | (_) ")
print(" | \| ")
print(" | ")
print(" | ")
if(erros == 4):
print(" | (_) ")
print(" | \|/ ")
print(" | ")
print(" | ")
if(erros == 5):
print(" | (_) ")
print(" | \|/ ")
print(" | | ")
print(" | ")
if(erros == 6):
print(" | (_) ")
print(" | \|/ ")
print(" | | ")
print(" | / ")
if (erros == 7):
print(" | (_) ")
print(" | \|/ ")
print(" | | ")
print(" | / \ ")
print(" | ")
print("_|___ ")
print()
def imprime_mensagem_vencedor():
print('Você ganhou!')
def imprime_mensagem_perdedor():
print('Você perdeu!')
def imprime_mensagem_abertura():
print('*' * 25)
print('Bem vindo ao jogo da forca!')
print('*' * 25)
def chama_chute():
chute = input("Qual letra? ")
chute = chute.strip().upper()
return chute
def carrega_palavra_secreta():
arquivo = open("palavras.txt", "r")
palavras = []
for linha in arquivo:
linha = linha.strip()
palavras.append(linha)
arquivo.close()
numero = random.randrange(0, len(palavras))
palavra_secreta = palavras[numero].upper()
return palavra_secreta
def seleciona_chute_correto(chute, letras_acertadas, palavra_secreta):
index = 0
for letra in palavra_secreta:
if (chute == letra):
letras_acertadas[index] = letra
index += 1
def inicia_letrasacertadas(palavra):
return ['_' for letra in palavra]
if(__name__ == "__main__"):
jogar()
A escrita do jogo foi simplificada criando diversas funções para (função DEF) deixar o código mais legível e mais organizado, também, tendo em vista o grande número de comandos escritos.
Foi importada a biblioteca random, pois é necessário para escolha aleatória da palavra_secreta
As funções mais simples criadas foram para a impressão da mensagem de boas vindas ao jogador, a impressão para o jogador chutar alguma letra da palavra secreta e a impressão da mensagem afirmando se o jogador teria perdido ou ganhado, que apareceria ao término do jogo.
Depois deles, foi definido a função para a palavra secreta que será carregada diretamente do arquivo “palavras.txt” criado no terminal do PYCHARM, por meio da função built-in OPEN (recebe o parâmetro de qual arquivo queremos abrir e o modo de trabalho do arquivo, nesse caso o r → read) e CLOSE (que fecha o arquivo). A partir dele foi carregada uma palavra aleatória retirada do arquivo “palavras.txt”
Também está definido o que aconteceria se o chute da letra, para a palavra secreta, fosse correto. Para isso, nessa função, foi criado um laço FOR para achar a letra dentro da palavra secreta (FOR letra IN palavra_secreta), onde foi identada uma condição IF para essa função.
Por fim, aparece definida a função inicia_letrasacertadas que funciona para tirar o “_” do lugar de onde as letras foram acertadas, para assim o espaço ficar preenchido apenas pela letra digitada corretamente.
Com isso, o jogo da forca foi elaborado, de forma a levar em conta diversas funções built-in, a importação de biblioteca e a definição de diversas funções.