Python 带时间限制/倒计时的输入
我对Python非常陌生,我想为我的学生编写一个(而不是计算机)语言培训师。就像计时器在后台运行一样,学生必须快速输入单词以减慢/恢复倒计时-否则倒计时为零并显示一些“游戏结束”消息。(就像特务必须在计时器接近零的时候拆除炸弹一样。)Python 带时间限制/倒计时的输入,python,multithreading,input,Python,Multithreading,Input,我对Python非常陌生,我想为我的学生编写一个(而不是计算机)语言培训师。就像计时器在后台运行一样,学生必须快速输入单词以减慢/恢复倒计时-否则倒计时为零并显示一些“游戏结束”消息。(就像特务必须在计时器接近零的时候拆除炸弹一样。) 当然,有很多关于线程的解释,听起来似乎是正确的方法,但到目前为止,我还没有发现任何将计时器与(限时)原始输入相结合的情况。各位专业人士能给我一个指向我忽略的教程/讨论的指针吗?你不必通过线程来完成,你可以在一个线程中以特定的频率运行“逻辑”,每次迭代都通过时间增量
当然,有很多关于线程的解释,听起来似乎是正确的方法,但到目前为止,我还没有发现任何将计时器与(限时)原始输入相结合的情况。各位专业人士能给我一个指向我忽略的教程/讨论的指针吗?你不必通过线程来完成,你可以在一个线程中以特定的频率运行“逻辑”,每次迭代都通过时间增量方法重新计算倒计时。这是多少视频游戏生产 假设您以60hz的频率运行此伪代码方法:
delta = timenow-timelast;
countdown -= delta;
if(input)
processInputHere;
您应该能够将伪代码转换为python代码以使其正常工作多亏了!最好的圣诞礼物!哈哈哈,不客气,如果您满意,请接受并投票。N00b回答:当然,我会投票支持您的答案-一旦我有足够的“声誉”…有threading.Timer和sys.exit可以简化您的代码。@Sebastian+1,谢谢。我想向他展示线程是如何工作的,因为在他的项目中,似乎他需要的不仅仅是简单的计时器
import threading
import time
import os
def ask():
"""
Simple function where you ask him his name, if he answers
you print message and exit
"""
name = raw_input("Tell me your name, you have 5 seconds: ")
exit_message = "Wohoho you did it..Your name is %s" % name
exit(exit_message)
def exit(msg):
"""
Exit function, prints something and then exits using OS
Please note you cannot use sys.exit when threading..
You need to use os._exit instead
"""
print(msg)
os._exit(1)
def close_if_time_pass(seconds):
"""
Threading function, after N seconds print something and exit program
"""
time.sleep(seconds)
exit("Time passed, I still don't know your name..")
def main():
# define close_if_time_pass as a threading function, 5 as an argument
t = threading.Thread(target=close_if_time_pass,args=(5,))
# start threading
t.start()
# ask him his name
ask()
if __name__ == "__main__":
main()