Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Projeto] Minha Versão do Jogo da Forca

Olá resolvi brincar um pouco com a linguagem e fiz minha versão do jogo com pontos e recursividade caso ganhe!

Separei em dois arquivos para ficar melhor a compreensão.

'/forca/functions.py'

def logout(kick):
    if (kick == "sair" or kick == "exit"):
        print("\nSaindo...\n")
        return True


def win(secret_word, rightLetters):
    if (len(secret_word) == len(rightLetters)):
        print(
            f"\nParabéns, você acertou, a palavra é '{secret_word.capitalize()}'\n")
        return True


def lose(chances, word):
    if (chances == 0):
        print(f"\nVocê foi enforcado, a palavra era {word}\n")
        return True


def kick():
    chute = str(input("Qual letra? "))
    return chute.strip() and chute.lower()


def chanceShow(chances, wrongLetters):

    if (chances < 7):
        print(f"Vocé ainda tem {chances} chances de acertar.\n")
        print(f"Letras erradas:\n{wrongLetters}\n")


def moreThanOneLetter(kick):
    if (len(kick) > 1):
        print("\nVocê deve digitar apenas uma letra.\n")
        return True

forca.py

from random import randrange
from forca_utils.functions import chanceShow, kick, moreThanOneLetter, logout, win, lose


def play():
    print('*****************************************')
    print('****** Bem-vindo ao jogo da Forca *******')
    print('*****************************************')
    print('*** Para sair digite "sair" ou "exit" ***')

    fruits = ["banana", "maça", "uva", "pera", "morango",
              "abacaxi", "goiaba", "melancia", "laranja"]
    secret_word = fruits[randrange(0, fruits.__len__())]
    secret_word_array = list(secret_word.__len__() * "-")

    play = bool(True)
    rightLetters = []

    wrongLetters = []
    chances = 7

    points = 0

    while (play):
        if lose(chances, secret_word):
            break
        print(f"\nPalavra Secreta:\n{secret_word_array}\n")
        if win(secret_word, rightLetters):
            points += 1
            print(f"Você tem {points} pontos\n")
            rightLetters = []
            wrongLetters = []
            chances = 7
            secret_word = fruits[randrange(0, len(fruits))]
            secret_word_array = list(len(secret_word) * "-")
            continue

        chanceShow(chances, wrongLetters)

        chute = kick()

        if logout(chute):
            break

        if moreThanOneLetter(chute):
            continue

        index = 0
        for letra in secret_word:
            if (chute == letra):
                secret_word_array[index] = letra
                rightLetters.append(letra)
            index += 1
        if (chute not in secret_word and chute not in wrongLetters):
            wrongLetters.append(chute)
            chances -= 1


if (__name__ == '__main__'):
    play()

1 resposta
solução!

Olá Hernande, tudo bem com você?

Meus parabéns pela implementação do código, fico feliz que tenha compartilhado-o com a comunidade do fórum Alura. Sua dedicação e empenho é muito importante para o seu desenvolvimento como pessoa programadora.

Gostaria de aproveitar a oportunidade e sugerir uma implementação para o seu código. Podemos implementar no cabeçalho com o uso da multiplicação de strings, quando queremos que uma determinada string seja repetida basta multiplicarmos ela. Sabendo disso, podemos implementar no cabeçalho do seu código conforme apresentado abaixo.

print(41 * '*')
print('****** Bem-vindo ao jogo da Forca *******')
print(41 * '*')
print('*** Para sair digite "sair" ou "exit" ***')

No código acima, a string '*' será repetida 41 vezes. Após a implementação salve o arquivo e execute-o.

Caso queira explorar mais funções sobre o uso do asterisco em Python, além de multiplicar caracteres, recomendo a leitura do seguinte artigo:

O conteúdo recomendado acima está em inglês, o uso da língua inglesa é bem comum na área de tecnologia, mas não se preocupe, caso não tenha afinidade com essa linguagem, recomendo que utilize o tradutor do navegador para uma melhor compressão.

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

Espero ter lhe ajudado. Fico à disposição.

Abraços e bons estudos.

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!