3
respostas

Minha versao do jogo da forca, ACEITO DICAS DE MELHORIAS

def jogar(): def linhas(tam=27): print('*' * tam)

def menu(msg, tam=0):
    tam = len(msg)
    print('*' * tam)
    print(msg)
    print('*' * tam)

def letras_disponiveis(list, indece):
    if indece in list:
        i = list.index(indece)
        list[i] = '*'
        print(f'Letras Disponiveis:', *list)
    else:
        print('Esta letra ja foi selecionada, Por favor digite outra!')
        print(f'Letras Disponiveis:', *list)

menu('Bem vindo ao jogo da forca!')

letras = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H',
          'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P',
          'Q', 'R', 'S', 'T', 'U', 'V', 'X', 'Z']
palavra_secreta = "maça".upper()
letras_acertadas = ['_' for letra in palavra_secreta]
acertou = False
enforcou = False
tentativa = 6
rodadas = 0

print(f'A Palavra chave tem {len(palavra_secreta)} letras.')
print('Letras disponiveis:', *letras)
print('Palavra-Chave:', *letras_acertadas)
linhas()


while not acertou and not enforcou:
    chute = input('Qual a letra? ').strip().upper()
    letras_disponiveis(letras, chute)
    if chute in palavra_secreta:
        print('Voce acertou!!!')
        for index, letra in enumerate(palavra_secreta):
            if chute == letra.upper():
                letras_acertadas[index] = letra
        print(f'Ainda restam {letras_acertadas.count("_")} letras')
    else:
        tentativa -= 1
        print(f'Voce errou, ainda restam {tentativa} tentativas!')

    print('Palavra-chave:', *letras_acertadas)
    rodadas += 1
    linhas()
    acertou = '_' not in letras_acertadas
    enforcou = tentativa == 0

if acertou:
    print('Parabens voce ganhou o jogo da forca.')
    print(f'Voce ganhou com {rodadas} rodadas')
    print(f'Palavra chave: {palavra_secreta} ')
else:
    print('Voce perdeu, Mais sorte da proxima veiz!')
    print(f'A palavra chave era {palavra_secreta}')
    print('Ate a proxima!')


print('Fim do Jogo')

if name == "main": jogar()

3 respostas

Grande Douglas. Tudo certo? Bom, quanto a erros, encontrei apenas dois erros. Faltou colocar o Ç na lista de letras disponíveis e faltou o underline no seguinte trecho:

if __name__ == "__main__":
    jogar( )

Quanto a melhorias, eu sugiro algumas. Vamos lá.

1 - Colocar uma função principal que chama as demais pra serem executadas dentro dela. Usar, de preferência, em casos onde existem trechos de códigos que se repetem. 2 - Ao invés de usar várias vezes o método print, tentar resumir a um só com a mesma formatação. Por exemplo:

print("texto")
print(variavel)
print("texto")

# Deixar assim:
print(f"texto \n{variavel} \ntexto")

3 - Criar uma lista com várias palavras para que o próprio programa sorteie essa palavra para ser usada como palavra secreta. 4 - Colocar uma pontuação no jogo.

Vamos lá, Douglas. Eu sei que você consegue.

Você pode usar a biblioteca unidecode pro programa aceitar ç como c e letras com acentos como iguais a letras sem acento

Obrigado adriano e gabrieli, vou implementar as dicas no meu codigo e assim que possivel repostarei, obrigado pelas dicas