2016-12-03 71 views
0

我創建了一個數學問答遊戲,向用戶打印和等式,如5 + 3 =?,並等待結果。如果答案是正確的,那麼用戶如果不是用戶輸的話就贏了。我想擴展遊戲並添加一個功能,爲用戶提供3秒的時間限制,如果他不輸掉。實現與遊戲邏輯運行pararell的計時器(倒計時)

在開始我嘗試使用時間模塊和time.sleep()函數,但這也延遲了整個程序的邏輯。

這裏是僞代碼的想法:

if (answer = wrong || time = 0) 
     lost... 
+0

這比你想象的要困難一些,因爲它可能需要線程。簡單的方法是計算回答問題所需的時間,並檢查它是否在閾值內。正確的做法是研究線程。 – roganjosh

+0

計算回答的時間並不是最好的想法,因爲難度隨着用戶收集的點數增加而增加。是否所有AAA標題都使用線程來實現這種功能? @roganjosh – Theof

+0

恐怕我不明白你最後的問題。但'輸入'在Python中被阻塞,所以你的計時器將會凍結而不需要線程。我會欺騙你一個答案,因爲這個問題出現很多,所以我們應該引導人們回到源頭,以避免類似的答案。 – roganjosh

回答

3
如果要檢查用戶是否走上長時,他回答,你可以使用 time模塊計算之探源

start_time = time.time() 
show_question() 
answer = get_answer() 
end_time = time.time() 
if (answer = wrong || end_time - start_time > 3) 
    lose() 

如果您希望用戶在通過3秒後鬆動(無需等待他們輸入答案),您將不得不使用線程,如下所示:

timer = threading.Timer(3, lose) 
show_question() 
answer = get_answer() 
timer.cancel() 
if (answer = wrong) 
    lose()