1
resposta

Adicionei uma lista para mostrar as letras erradas - Aceito crítica

import random

def jogar():


    msg_abertura()
    palavra_secreta = carrega_palavra() 

    letras_acertadas = inicializa_letras_acertadas(palavra_secreta)
    print(letras_acertadas)

    enforcou = False
    acertou = False
    erros = 0
    letras_erradas_lista = []

    while not enforcou and not acertou:
        chute = pega_chute()

        if chute in palavra_secreta:
            marca_chute_certo(chute, letras_acertadas, palavra_secreta)
        else:
            erros += 1
            desenha_forca(erros)
            letras_erradas(chute, palavra_secreta, letras_erradas_lista)

        enforcou = erros == 7
        acertou = "_" not in letras_acertadas
        print(letras_acertadas)
        print("Essas são as letras erradas: ")
        print(letras_erradas_lista)

    if acertou:
        msg_vitoria()
    else:
        msg_derrota(palavra_secreta)

    print("\nFim de Jogo!")

def msg_vitoria():

    print("\nParabéns!!! Você ganhou!")
    print("       ___________      ")
    print("      '._==_==_=_.'     ")
    print("      .-\\:      /-.    ")
    print("     | (|:.     |) |    ")
    print("      '-|:.     |-'     ")
    print("        \\::.    /      ")
    print("         '::. .'        ")
    print("           ) (          ")
    print("         _.' '._        ")
    print("        '-------'       ")
    
def msg_derrota(palavra_secreta):

    print("\nVocê Perdeu!!! A palavra secreta era {}! Boa sorte na próxima vez!".format(palavra_secreta))
    print("    _______________         ")
    print("   /               \       ")
    print("  /                 \      ")
    print("//                   \/\  ")
    print("\|   XXXX     XXXX   | /   ")
    print(" |   XXXX     XXXX   |/     ")
    print(" |   XXX       XXX   |      ")
    print(" |                   |      ")
    print(" \__      XXX      __/     ")
    print("   |\     XXX     /|       ")
    print("   | |           | |        ")
    print("   | I I I I I I I |        ")
    print("   |  I I I I I I  |        ")
    print("   \_             _/       ")
    print("     \_         _/         ")
    print("       \_______/           ")
    
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 msg_abertura():

    print("*************************************")
    print("*****Bem vindo ao jogo da Forca!*****")
    print("*************************************") # imprime mensagem de abertura# imprime mensagem de abertura

def carrega_palavra():

    palavra = []
    with open("palavras.txt", "r") as file:
        for linha in file:
            palavra.append(linha.strip())
    num = random.randrange(0, len(palavra))
    palavra_secreta = palavra[num].upper()
    print("A palavra tem {} letras".format(len(palavra_secreta)))
    return palavra_secreta
    
def letras_erradas(chute, palavra_secreta, letras_erradas_lista):

    if chute not in palavra_secreta:
        letras_erradas_lista.append(chute)
    letras_erradas_lista.sort()
    return letras_erradas_lista
    #print("Essas são as letras erradas: ")
    #print(letras_erradas_lista)
    
def inicializa_letras_acertadas(palavra): 

    return ["_" for letra in palavra]
    
def pega_chute():

    chute = input("Escolha uma letra: ")
    chute = chute.strip().upper()
    return chute
    
def marca_chute_certo(chute, letras_acertadas, palavra_secreta):

    index = 0
    for letra in palavra_secreta:
        if chute == letra:
            letras_acertadas[index] = letra
        index += 1
    print("A palavra é ...")

if __name__ == "__main__":
    jogar()
    
1 resposta

Oi Mario, tenho uma sugestão ....

Eu queria jogar o seu jogo :) Então copiei o código e colei num interpretador Python online!! No entanto, não funcionou pois depende de uma arquivo externo para carregar as palavras :(

Então a minha sugestão é: quando nao existe o arquivo, fornece uma lista de palavras para escolher uma aleatoriamente.

Assim todos nos podemos jogar online :))

abs, Nico

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software