我正在尝试制作一个简单的python游戏来训练我的技能,它就像一个带陷阱的地下城和类似的东西,这里是游戏代码的一部分:
from sys import exit
def trap():
print "You've fallen into a trap,you have 10 seconds to type the word \"Get me out\""
user_input = raw_input("> ")
right_choice = "Get me out"
if *SOME CODE*:
*MORE CODE*
else:
die("you died,you were too slow")
def die(why):
print why , "Try again"
exit(0)
你可以看到我想在10秒后结束python脚本如果user_input不等于right_choice,则在代码中替换 SOME CODE , MORE CODE 上面的例子,怎么做?
答案 0 :(得分:0)
您希望通过信号完成您想要完成的任务:https://stackoverflow.com/a/2282656/2896976
不幸的是,处理这种情况并不是一种友好的方式。通常情况下,对于游戏,你会在每一帧都调用它,但像raw_input
这样的调用就是所谓的阻塞。也就是说,程序在完成之前无法执行任何操作(但如果用户从未说过任何事情,那么它就不会完成)。
答案 1 :(得分:0)
试试这个。它使用signal
在打印语句的10秒内发回信号。如果您希望它在第一次输入之后,请移动信号调用。
import signal
from sys import exit
def trap():
print "You've fallen into a trap,you have 10 seconds to type the word \"Get me out\""
signal.signal(signal.SIGALRM, die)
signal.alarm(10)
user_input = raw_input("> ")
right_choice = "Get me out"
if *SOME CODE*:
*MORE CODE*
signal.alarm(0)
def die(signum, frame):
print "Try again"
signal.alarm(0)
exit(0)