Python (linux) Ошибка ввода текстовой игры

1

Я работаю над текстовой приключенческой игрой. Я несколько раз пересматривал его и не могу получить результат, который я хочу, когда я пытаюсь создать СОБЫТИЯ, а не просто полагаться на обилие строк PRINT. Всякий раз, когда я выбираю вариант, который я хочу (дверь 1 в этом случае), то следующие параметры, вход не отвечает или дает мне ошибку. Ниже приведена часть кода для двери 1. Небольшая ясность будет оценена!

def main():
import sys
from colorama import init
init()
init(autoreset=True)
from colorama import Fore, Back, Style

def run_event(event):
    text, choices = event
    text_lines = text.split("\n")
    for line in text_lines:
        print(Style.BRIGHT + line)
        print()
    choices = choices.strip()
    choices_lines = choices.split("\n")
    for num, line in enumerate(choices_lines):
        print(Fore.GREEN + Style.BRIGHT + str(num + 1) + ". " + line)
        print()
    return colored_input()

def colored_input():
    return input(Fore.YELLOW + Style.BRIGHT + "> ")
print ("")
print ("")
print ("                                                                           WELCOME TO THE MAZE                                   ")
print ("")
print ("")
print ("You have found yourself stuck within a dark room, inside this room are 5 doors.. Your only way out..")
print ("")
print ("Do you want to enter door 1,2,3,4, or 5?")
print ("")

EVENT_DOOR1 = ("""
Theres an alien eating what appears to be a human arm, though its so damaged it hard to be sure. There is a knife next to the alien.
what do you want to do?
""","""
Go for the knife
Attack alien before it notices you
""")

EVENT_ALIEN = ("""
You approach the knife slowly, While the alien is distracted. You finally reach the knife, but as you look up, the alien stares back at you.
You make a move to stab the alien, but he is too quick. With one swift motion, the alien thrusts you into the air.
You land hard, as the alien makes it way towards you again. What should you do?
""", """
Accept defeat?
Last ditch effort?
""")

EVENT_ALIEN2 = ("""
You catch the alien off-guard. He stumbled and hisses in your direction. You scream in terror before he grabs the knife, and punctures your throat as he rips off your limbs.")
You died.. GAME OVER.. Mistakes can't be made this soon.. OUCH
""")

door = colored_input()
if door == "1":
    run_event(EVENT_DOOR1)

alien = colored_input()
if alien == "1":
    run_event(EVENT_ALIEN)
elif alien == "2":
    run_event(EVENT_ALIEN2)

    restart=input("Start over? Yes or No? ").lower()
    if restart == "yes":
        sys.stderr.write("\x1b[2J\x1b[H")
        main()

    else:
        exit()

main()
Теги:
input
events
adventure

1 ответ

1
Лучший ответ

Функция run_event без необходимости делает другой вызов colored_input() когда он возвращается, вызывая невосприимчивость, так как скрипт ждет другого ввода. Удалите return colored_input() и ваш код будет работать.

Также обратите внимание, что вы должны добавить запятую в единый элемент, назначенный EVENT_ALIEN2; иначе он будет оцениваться как строка:

EVENT_ALIEN2 = ("""
You catch the alien off-guard. He stumbled and hisses in your direction. You scream in terror before he grabs the knife, and punctures your throat as he rips off your limbs.")
You died.. GAME OVER.. Mistakes can't be made this soon.. OUCH
""",)
  • 0
    Благодарю за ваш ответ! Очень полезно. Не могу поверить, что я упустил это из виду, ха-ха. У меня был еще один вопрос, если это возможно, могу ли я внести какие-либо изменения, чтобы исправить форматирование? Например, в 2. параметрах всегда есть пробел. @blhsing

Ещё вопросы

Сообщество Overcoder
Наверх
Меню