Переменные сбрасываются при вызове метода
Я создаю текстовую игру, которая требует от вас поиска двух мест, чтобы двигаться вперед в игре, но у нее также есть два фиктивных варианта, чтобы сбить вас с пути. Это не важно. Проблема в том, что как только метод вызывается снова после заголовка одной из опций 'if', и одна из переменных устанавливается в true, он устанавливает его обратно в false в самом верху.
def marketplace():
searchArmorer=False
searchBlacksmith=False
while (searchArmorer==False and searchBlacksmith==False):
print("Search the:")
search=input("\n A. The blacksmith \n B. Crocodile Shop \n C. Armorer \n D. Exotic Cheese shop \n")
if search=="A":
searchBlacksmith=True
print("You find some dusty looking copper swords in the corner that the blacksmith says you can borrow. If you haven't got it already, now all you need is some armor. \n")
marketplace()
elif search=="B":
croc=input("You open the door to have a crocodile leap out at you! Will you attempt to fight it, or run away? \n A. Fight \n B. Flee \n")
#croc fight
if croc=="A":
print("You have died. Crocodiles are dangerous.")
break
elif croc=="B":
print("You escape back to the village square. \n")
marketplace()
#end of croc fight
elif search=="C":
searchArmorer=True
print("You ask if the armorer has any cheap armor, but he says the cheapest he has is leather. It's not your first choice, but beggars can't be choosers. \n")
marketplace()
elif search=="D":
print("You see nothing that could help you on your quest. \n")
marketplace()
1 ответ
Цикл "while" будет выполняться снова и снова до тех пор, пока условие не станет ложным, поэтому вам не нужно снова вызывать функцию из цикла.
Удалить или закомментировать все звонки на marketplace()
и будет работать нормально.
Также вам не нужно использовать continue
либо, если вы используете if - elif, потому что он выполнит только одно из предложений.