1
resposta

Mãos na massa: encerrando o jogo

Olá a todos,

Para inicio eu consegui entender o a estrutura do codigo das aulas, porém fiz algumas modificações, fiz a implementação de um nivel de dificuldade (semelhante ao do exercicio de adivinhação) com restrição a apenas as opções informadas, já no momento do chute, coloquei uma condição para que o usuário informe apenas 1 caractere e na checagem da palavra utilizei a função .join() para converter a list para uma string para que seja verificado se o usuário acertou ou não, então dessa forma, segue a estrutura do codigo:

def jogar_forca():

    print(36 * "*")
    print("*****Bem-vindo no jogo da forca!****")
    print(36 * "*")
    #Entrada do usuário para a escolha da dificuldade do jogo.
    tentativas = input("Escolha a dificuldade: (1)fácil (2)Médio (3)Difícil: ")

    #condição para checar se o valor da entrada está correto.
    while(not tentativas.isdigit() or int(tentativas) <= 0 or int(tentativas) >= 4):
        tentativas = input("Por favor, escolha a dificuldade correta... (1)fácil (2)Médio (3)Difícil: ")

    tentativas = int(tentativas)

    #condições referente ao total de tentativas de erro do usuário       
    if(tentativas == 1):
        tentativas = 6
        print("O seu total de tentativas e de {}, boa sorte!".format(tentativas))     
    elif(tentativas == 2):
        tentativas = 4
        print("O seu total de tentativas e de {}, boa sorte!".format(tentativas))
    elif(tentativas == 3):
        tentativas = 2
        print("O seu total de tentativas e de {}, boa sorte!".format(tentativas))

    palavra_secreta = "maçã".upper()
    palavra_acertada = ["_" for letra in palavra_secreta]

    print("Tente advinhar a palavra sorteada: {}".format(palavra_acertada))

    acertou = False
    enforcou = False
    erros = 0

    # Dentro da estrutura que é responsável por lê o chute do usuário.
    while(not acertou and not enforcou):


        chute = input("Qual é a letra? ")
        chute = chute.strip().upper()

    #condição reponsavel por verificar se o usuário está informando outro tipo de caracter
        if (not chute.isalpha() or not len(chute) == 1):
            print("Por favor, insira apenas letras e um caractere...")
            continue

        index = 0
        if(chute in palavra_secreta):
            for letra in palavra_secreta:
                if(chute == letra):
                    palavra_acertada[index] = letra
                index += 1
        else:
            erros += 1
        palavra = ''.join(palavra_acertada)
        print("A palavra é: {}".format(palavra_acertada))

        #condição para saber se o usuário erro ou acertou a palavra chave e se não acontecer nenhuma das opções apenas informa o número de erros.
        if(erros == tentativas):
            enforcou = True
            print("Você errou a palavra secreta, a palavra era {}".format(palavra_secreta))
        elif( palavra == palavra_secreta):
            print("Parabéns você acertou a palavra secreta que é {}".format(palavra_secreta))
            acertou = True
        else:
            print("Numero de erros: {}".format(erros))
            print(36 * "*")



    print("Fim do jogo!")

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

Oiii Rômulo.

Excelente implementação do código, ela servirá de inspiração para os alunos e alunas que lerem sua postagem. Sua implementação está bem estruturada e clara. Continue praticando e aprimorando suas habilidades em Python!

Não hesite em voltar ao fórum para continuar aprendendo e interagindo com a comunidade.

Em caso de dúvidas estou à disposição. Abraços e 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