1
resposta

Solução alternativa com níveis de dificuldade

Opa boa tarde!

Fiz esse código deixando a var tentativas em função da dificuldade senecionada.

Além disso utilizei set para armazenar as tentativas e não permitir o consumo de tentativas em jogadas repetidas.

Está exibindo quantas letras faltam e quantas jogadas faltam. O jogo termina em caso de letras > jogadas.

Possui 2 opções de término por acerto, da forma passada em aula ou com if e break (está comentado). #edit

def runForca():
    print("---------------------------------------------------------")
    print("Bem vindo ao jogo da forca")
    dificuldade = int(input("Escolha uma dificuldade: Fácil(1), Normal(2), Difícil(3)"))
    print("---------------------------------------------------------")


    palavraChave = "Prato".lower()

    enforcou = False
    acertou = False
    chuteTry = {1}
    tentativas = len(palavraChave) + round(10/dificuldade)
    print(f"Você possui {tentativas} chutes")
    chutesCorretos = ["_","_","_","_","_"]
    print("______________________________________")
    print(chutesCorretos)
    print("--------------------------------------")
    #equivalente à escrever enforcou == false and acertou == false
    #isso pq o valor de acertou é false até que o player erre todas
    # as chances e acertou é false até que o player acerte

    #é possível verificar a primeira ocorrpência do de algum caracter em uma string com a função string.find(oque quero procurar)

    while((not enforcou) and not acertou):
        chute = input("Digite uma letra: \n").lower()

        posAcerto = 0
        #verifica se o item já foi chutado antes de iniciar uma tentativa
        if not chute in chuteTry:
            #adiciona o item chutado no set de chutes chuteTry
            chuteTry.add(chute)
            for letra in palavraChave:
                #define valor de incremento das posições que o chute acertou (se acertou)

                if(letra == chute):

                    if not chute in chutesCorretos:
                        chutesCorretos[posAcerto] = chute                    

                posAcerto += 1 

            #verifica se ainda existem campos a serem "descobertos" pelo usuário
            print(chutesCorretos)
            #if not "_" in chutesCorretos:
               # print("Você encerrou o game, parabéns")
                #break

            #subtrai as tentativas a cada iteração do while
            tentativas = tentativas -1
            print(f"Você ainda tem {tentativas} tentativas")

            #calcula as tentativas restantes
            numRest = chutesCorretos.count("_")
            print(f"Restam {numRest} letras")

            #verifica se o usuário conseguirá chegar ao fim do jogo com suas tentativas ou se suas tentativas ainda existem
            enforcou = tentativas <= 0 or tentativas < numRest
            acertou = not "_" in chutesCorretos
        else:
            print("Essa Letra já foi chutada")

if __name__ == "__main__":
    runForca()

Postando pq acho interessante ler outros códigos e, desta forma, disponibilizo os meus.

1 resposta

Olá Guilherme, tudo bem? Espero que sim!

Testei aqui e ficou muito bacana.

É muito interessante fazer da sua própria forma, fazendo os ajustes que desejar. Ajuda bastante no aprendizado.

Obrigado por compartilhar aqui no fórum para que mais pessoas possam ver.

Bons estudos!