1
resposta

Jogar novamente e sair do jogo

Queria implementar a função de saída do jogo para o usuário,mas estou tendo dificuldades

import random

def jogar():

imprimir_mensagem_inicial()
palavra_secreta = carrega_palavra_secreta()

letras_acertadas =  ['_' for letra in palavra_secreta]
enforcou = False
acertou = False
letras_erradas = 0


while(not enforcou and not acertou):

    chute = input('Digite uma letra: ')
    chute = chute.strip().upper()

    if chute in palavra_secreta:
        index = 0
        for letra in palavra_secreta:
            if chute == letra:
                letras_acertadas[index] = letra
            index += 1

    else:
        letras_erradas += 1
        print(f'VOCÊ ERROU!FALTAM {5-letras_erradas} TENTATIVAS')

    enforcou = letras_erradas == 5
    acertou = '_' not in letras_acertadas
    print(letras_acertadas)

    if(acertou):
        print('PARABÉNS,VOCÊ ACERTOU A PALAVRA SECRETA!')
    elif(enforcou):
        print('VOCÊ NAO ADIVINHOU A PALAVRA SECRETA DENTRO DAS 5 TENTATIVAS!')


print('FIM DE JOGO')

jogar_novamente()

def imprimir_mensagem_inicial(): print('*') print('Bem vindo ao jogo de Forca!') print('*')

def carrega_palavra_secreta(): arquivo = open('palavras_secretas.txt', 'r') palavras = [] for linha in arquivo: linha = linha.strip() palavras.append(linha)

arquivo.close()

numero = random.randrange(0, len(palavras))
palavra_secreta = palavras[numero].upper()
print(palavras)
print(palavra_secreta)
return palavra_secreta

def imprime_letras_acertadas(): letras_acertadas = ['' for letra in palavrasecreta] return letras_acertadas

def jogar_novamente(): print('Para jogar novamente,digite 1: ') print('Para sair,digite 2: ')

jogar_novamente = int(input('Digite a opção desejada: '))

if jogar_novamente == 1:
    jogar()
else:
    stop 

if name == 'main': jogar()`

`

1 resposta

E ae, tudo tranquilo? Não sei se você já resolveu, mas eu vou te passar o que eu pensei aqui. Fiz uma função de jogar novamente:

A função faz um print perguntando se você quer jogar novamente e pede um input "(1) Sim" ou "(2) Não" Se sim ele vai chamar a função jogar() Se não vai chama a função sys.exit(0). Essa função é importada utilizando o import sys

def jogar_novamente():
    print("Quer jogar novamente? (1) Sim, (2) Nao")
    novamente = int(input().strip())
    if(novamente == 1):
        print("Jogando Forca")
        jogar()
    elif(novamente == 2):
        print("Fim de Jogo")
        sys.exit(0)

Eu chamei a função jogar_novamente() na função jogar(), após a mensagem de vencedor ou perdedor:

import random
import sys

def jogar():
    imprime_mensagem_abertura()
    palavra_secreta = carrega_palavra_secreta()

    letras_acertadas = inicializa_letras_acertadas(palavra_secreta)
    print(letras_acertadas)

    enforcou = False
    acertou = False
    erros = 0

    while(not enforcou and not acertou):

        chute = pede_chute()

        if(chute in palavra_secreta):
            marca_chute_correto(chute, letras_acertadas, palavra_secreta)
        else:
            erros += 1
            desenha_forca(erros)

        enforcou = erros == 7
        acertou = "_" not in letras_acertadas

        print(letras_acertadas)

    if(acertou):
        imprime_mensagem_vencedor()
        jogar_novamente()
    else:
        imprime_mensagem_perdedor(palavra_secreta)
        jogar_novamente()

Espero que tenha te ajudado, Abraço!