2016-04-25 92 views
1

我需要一个游戏循环,直到一分钟后运行。我已经搜查,我发现这一点:时间循环python

t_end = time.time() + 60 
while time.time() < t_end: 
    #blah blah blah 

但这种循环将运行一分钟,然后完成循环它在。我需要一个为我的游戏循环,一旦时间用完就会停下来,这样人们在循环结束前就不会再猜测了。

+1

你有循环内有什么东西在等待用户输入吗?如果是这样,请将其包含在您的代码段中,因为它非常相关。 – Hamms

+1

破坏当前正在执行的任务而不等待循环结束的唯一方法是使用线程或多处理。 请注意,多处理对于初学者来说可能很复杂,并且在使用线程时应考虑到这些因素。但这是确保程序在1分钟后终止的唯一方法。 在这里看到的文档: https://docs.python.org/2/library/threading.html https://docs.python.org/2/library/multiprocessing.html –

+0

你给一个代码片段一个循环会在时间用完时立即停止,然后说你“需要一个循环来让我的游戏在时间耗尽后立即停止”。你想做什么,真的吗? –

回答

-3

您将需要在for循环中检查以打破它。

import time 
t_end = time.time() + 60 
while time.time() < t_end: 
    if time.time() >= t_end: 
     break 
    else: 
     #blah blah blah 

的大于条件将确保我们仍然打破循环的条件下,时钟滴答都足以让time.time()比循环开始的时候,它检查if语句的时间之间t_end更大。

-1

也许你想要的只是检查用户是否闲置了一分钟。你不能用独立的定时循环来做到这一点,因为除非你使用多线程(你可能不想这样做),否则程序的其余部分无法响应超时。在单线程程序,你必须混合的时间检查你的逻辑的其余部分,类似的信息(伪):如果你的函数blah_blah_blah是足够短,这将工作OK

last_user_action = time.time() 
while True: 
    if user_did_something(): 
     last_user_action = time.time() 
    else: 
     if time.time() - 60.0 > last_user_action: 
      break 
    blah_blah_blah() # You must keep this fairly short 
sys.exit(1) 

。如果不是,你必须弄清楚如何编写一个多线程或事件驱动的应用程序。 Tkinter或任何GUI环境都具有必要的功能。