2016-04-25 88 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環境都具有必要的功能。