Python(Linux)基于文本的游戏输入错误

时间:2018-08-17 03:10:50

标签: python linux events input adventure

我一直在从事基于文字的冒险游戏。我修改了几次,当我尝试创建事件而不是仅仅依靠大量的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's 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's 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()

1 个答案:

答案 0 :(得分: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
""",)