Code continues running after game’s end

Asked

Viewed 64 times

2

In line 10, even if I choose option 2 not to continue in the game, the Game Over appears but the code continues running.

On the line marked (line 10), even if I choose option 2, which should be the end of the game, the game still continues even if I choose option 2! Someone knows how to help me?

print("========TESTE RPG========")
print()
print("========BEM VINDO A ASGARD!========")
print("Você tem certeza que deseja encarar essa jornada?")
a = int(input("Digite '1' para sim ou digite '2' para não!"))
if (a==1):
    print("Boa jornada aventureiro!")
else:
    if(a==2):
        print("Fim de jogo!") # Linha 10.

    else:
        print("Você precisa digitar '1' ou '2'!!!")
    print("Velho Estranho: Vejo que és corajoso jovem guerreiro!")
    print("Velho Estranho: Meu nome é Danagorn!")
    print("Danagorn: Qual é o seu nome meu jovem?")
    nome = input("Eu: Meu nome é:")
    print("Danagorn: Bem, seja bem vindo a Asgard,", nome)
    print("Danagorn: Vejo que estás sem seus equipamentos! Gostaria de se equipar?")
    equip = int(input("Digite '1' para confirmar ação, ou '2' para negar!"))
if (equip==1):
    print("Danagorn: Tome aqui então esta armadura, que com certeza lhe será util!")
    print("Danagorn: Pegue também esta espada e este escudo, lhe serão de grande serventia!")
else:
    if(equip==2):
        print("Danagorn: Não permitirei que você siga em frente sem estar bem equipado!")
        print("Danagorn: Se você não se equipar, receio que não possamos continuar nossa jornada!")
        equip1 = int(input("Digite '1' para se equipar, ou digite '2' para desistir da jornada!"))
        if(equip1==1):
            print("Danagorn: Boa escolha, meu jovem!")
        else:
            print("Danagorn: A sua jornada se encerra aqui!")
            print("Fim de jogo!")
  • Young man, instead of putting "solved" in the title, you should mark the answer by clicking the button below the votes of the answer you liked.

2 answers

0


This is happening because despite the code entering the specific condition, the processing continues from line 15. You need to stop running the game with the following command:

import sys
sys.exit()

Add right after line:

print("Fim de jogo!")

-1

Try something like that:

def ler_input(msg):
    a = 0
    while a != 1 and a != 2:
        a = int(input(msg))
        if a != 1 and a != 2:
            print("Você precisa digitar '1' ou '2'!!!")
    return a == 1

print("========TESTE RPG========")
print()
print("========BEM VINDO A ASGARD!========")
print("Você tem certeza que deseja encarar essa jornada?")

a = ler_input("Digite '1' para sim ou digite '2' para não!")

if a:
    print("Boa jornada aventureiro!")
    print("Velho Estranho: Vejo que és corajoso jovem guerreiro!")
    print("Velho Estranho: Meu nome é Danagorn!")
    print("Danagorn: Qual é o seu nome meu jovem?")
    nome = input("Eu: Meu nome é:")
    print("Danagorn: Bem, seja bem vindo a Asgard,", nome)
    print("Danagorn: Vejo que estás sem seus equipamentos! Gostaria de se equipar?")
    equip = ler_input("Digite '1' para confirmar ação, ou '2' para negar!")
    if equip:
        print("Danagorn: Tome aqui então esta armadura, que com certeza lhe será util!")
        print("Danagorn: Pegue também esta espada e este escudo, lhe serão de grande serventia!")
    else:
        print("Danagorn: Não permitirei que você siga em frente sem estar bem equipado!")
        print("Danagorn: Se você não se equipar, receio que não possamos continuar nossa jornada!")
        equip1 = ler_input("Digite '1' para se equipar, ou digite '2' para desistir da jornada!")
        if equip1:
            print("Danagorn: Boa escolha, meu jovem!")
        else:
            print("Danagorn: A sua jornada se encerra aqui!")
print("Fim de jogo!")

The idea is to create the function ler_input(msg) what question to the user, insisting that he answer 1 or 2 until he does so.

The print("Fim de jogo!") is right at the end, out of any identation so that it always appears only once and only at the end, regardless of which paths the execution of the code takes in the previous steps.

Browser other questions tagged

You are not signed in. Login or sign up in order to post.