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!

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