Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

11
respostas

Problema ao abrir o jogo

Ao ir a pasta e colocar para rodar, e escolher um dos dois jogos o jogo da forca abre e fecha automaticamente, tentei colocar o time no codigo mas não sei onde devo colocar o time.sleep(). Se houver outra solução a não ser essa agradeço a ajuda.

11 respostas

Acho que é importante que você compartilhe o código para que alguém possa saber onde ajudar. Mas verifica se você está chamandos a função do jogo corretamente, pois sem chamar a função, nada acontece.

#esse e o codigo
import random


def jogar():
    imprime_mensagem_abertura()
    palavra_secreta = carrega_palavra_secreta()
    letras_acertadas = inicializa_letras_acertadas(palavra_secreta)
    print(letras_acertadas)


    acertou = False
    enforcou = False
    erros = 0

    while not acertou and not enforcou:
        chute = pede_chute()
        if chute in palavra_secreta:
            marca_chute_correto(chute, palavra_secreta, letras_acertadas)
        else:
            erros += 1
            desenha_forca(erros)
            print("Você errou faltam {} tentativas.".format(6 - erros))

        if erros == 7:
            imprime_mensagem_perdedor(palavra_secreta)
            print(f"A palavra secreta e: {palavra_secreta}")
            break

        if ("_" not in letras_acertadas):
            imprime_mensagem_vencedor(palavra_secreta)
            print(f"A palavra secreta e: {palavra_secreta}")
            break

        print(letras_acertadas)


def imprime_mensagem_abertura():
    print("########################################")
    print("######Bem vindo ao jogo da forca!!######")
    print("########################################")
    print("A dica da palavra é uma fruta.")


def pede_chute():
    chute = input("Qual a letra:")
    chute = chute.strip().upper()
    return chute


def marca_chute_correto(chute, palavra_secreta, letras_acertadas):
    if chute in palavra_secreta:
        index = 0
        for letra in palavra_secreta:
            if chute == letra:
                letras_acertadas[index] = letra
            index += 1


def carrega_palavra_secreta():
    arquivo = open("Arquivo.txt", "r", encoding="utf -8 ") # "Encoding="utf -8" é utilizado para reconhecimentos de strings com caracteres especiais. Ex: "ç"
    palavras = []

    for linha in arquivo:
        linha = linha.strip()
        palavras.append(linha)
    arquivo.close()

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


def inicializa_letras_acertadas(palavra):
    return ["_" for letra in palavra]


def imprimir_vencedor():
    print("Você ganhou!!")
    print("Game Over!!")

def imprime_mensagem_vencedor(palavra_secreta):
    print("Parabéns, você ganhou!")
    print("       ___________      ")
    print("      '._==_==_=_.'     ")
    print("      .-\\:      /-.    ")
    print("     | (|:.     |) |    ")
    print("      '-|:.     |-'     ")
    print("        \\::.    /      ")
    print("         '::. .'        ")
    print("           ) (          ")
    print("         _.' '._        ")
    print("        '-------'       ")

def imprime_mensagem_perdedor(palavra_secreta):
    print("Você foi enforcado!!")
    print("Game Over!!")
    print("A palavra era {}".format(palavra_secreta))
    print("    _______________         ")
    print("   /               \       ")
    print("  /                 \      ")
    print("//                   \/\  ")
    print("\|   XXXX     XXXX   | /   ")
    print(" |   XXXX     XXXX   |/     ")
    print(" |   XXX       XXX   |      ")
    print(" |                   |      ")
    print(" \__      XXX      __/     ")
    print("   |\     XXX     /|       ")
    print("   | |           | |        ")
    print("   | I I I I I I I |        ")
    print("   |  I I I I I I  |        ")
    print("   \_             _/       ")
    print("     \_         _/         ")
    print("       \_______/           ")

def desenha_forca(erros):
    print("  _______     ")
    print(" |/      |    ")

    if(erros == 1):
        print(" |      (_)   ")
        print(" |            ")
        print(" |            ")
        print(" |            ")

    if(erros == 2):
        print(" |      (_)   ")
        print(" |      \     ")
        print(" |            ")
        print(" |            ")

    if(erros == 3):
        print(" |      (_)   ")
        print(" |      \|    ")
        print(" |            ")
        print(" |            ")

    if(erros == 4):
        print(" |      (_)   ")
        print(" |      \|/   ")
        print(" |            ")
        print(" |            ")

    if(erros == 5):
        print(" |      (_)   ")
        print(" |      \|/   ")
        print(" |       |    ")
        print(" |            ")

    if(erros == 6):
        print(" |      (_)   ")
        print(" |      \|/   ")
        print(" |       |    ")
        print(" |      /     ")

    if (erros == 7):
        print(" |      (_)   ")
        print(" |      \|/   ")
        print(" |       |    ")
        print(" |      / \   ")

    print(" |            ")
    print("_|___         ")
    print()

if (__name__ == "__main__"):
    jogar()

Testei seu código e está funcionando perfeitamente...

Coloca o código do arquivo principal, sem ser o do jogo da forca.

Esse abre normalmente, apos a escolha da forca ele abre rapidamente e fecha.

import Forca
import Adivinhação

print("##############Escolha seu jogo!!#############")
print("(1) Adivinhação (2) Forca")
jogo = int(input("Qual jogo?"))

if (jogo == 1):
    print("Jogo de Adivinhação ")
    Adivinhação.jogar()

elif (jogo == 2):
    print("Jogo da Forca")
    Forca.jogar()

Já esse quando escolhido abre normalmente, pois coloquei tempo para ele esperar.

import random
def jogar():

    print("Bem vindo ao jogo de adivinhação")
    numero_secreto = random.randrange(1, 101)


    print("Qual o nivel de dificuldade?")
    print("(1) Easy (2) Normal (3) Hard")
    pontos = 1000
    total_de_tentativas = 0
    nivel = int(input("Qual nível você escolhe:"))

    if nivel == 1:
        total_de_tentativas = 15
    elif nivel == 2:
        total_de_tentativas = 10
    else:
        total_de_tentativas = 5

    print("O número vai de 1 a 100")
    rodada = 1
    errou = rodada == total_de_tentativas

    for rodada in range(1, total_de_tentativas + 1):
        print("Tentativas {} de {}".format(rodada, total_de_tentativas))
        chute = input("Digite seu nùmero: ")
        print("Você digitou:", chute)
        chute = int(chute)
        if chute < 1 or chute > 100:
            print("Você deve digitar um número de 1 a 100")
            continue

        acertou = chute == numero_secreto
        type(acertou)
        maior = chute > numero_secreto
        menor = chute < numero_secreto

        if acertou:
            print("Você acertou. Você fez {} pontos!".format(pontos))
            print("Great Game")
            print("Game Over!!")
            break
        else:
            if maior:
                print("Você errou! Seu número foi maior do que a resposta.")
            elif menor:
                print("Você errou! Seu número e menor do que a resposta.")

                pontos_perdidos = abs(numero_secreto - chute)
                pontos = pontos - pontos_perdidos
    else:
        if not errou:
            print("O número secreto era {}.Você fez {} pontos!".format(numero_secreto, pontos))
            print("Game Over!!")

    time.sleep(5)
if (__name__ == "__main__"):
    jogar()

Muito estranho, pois rodei aqui e funcionou normal. Faz o seguinte: envia o teu projeto inteiro com os arquivos em um site tipo pastebin, e coloca aqui o link. Assim fica melhor de baixar o teu projeto e tentar te ajudar

Blz vou fazer

https://pastebin.com/sg5UCZT6

Ta na mão irmão, espero que de certo

Ta pedindo uma senha para acessar. Se não conseguir, me diz o teu e-mail que eu entro em contato

guiiberteli13@gmail.com