<p>要解决您的问题,您必须使用<code>Thread</code>。我拿了你的代码,我在开头添加了线程,试着看一看</p>
<p>线程是可以在主程序旁边执行函数(其<code>run</code>函数)的对象。这就是所谓的<em>并行编程</em><br/>
这里您需要它,因为您想要:</p>
<ol>
<li>检查播放器的输入</li>
<li>倒计时</li>
</ol>
<p>我没有修改你的代码或重写它,我只是添加了线程并使其工作。这很简单:</p>
<ol>
<li>我在给定的时间内调用<code>sleep</code>(<code>_TIME_LIMIT</code>]</li>
<li>计时器结束时发出一点声音</li>
<li>我将一个变量设置为<code>True</code>,这意味着计时器结束</li>
</ol>
<p>只要稍加重写,当线程更改变量时,您就可以中断主循环。但这超出了最初问题的范围,请随意改进您的游戏。<br/>
目前,您需要输入一个数字来知道时间是否结束。这就是为什么我添加了小噪音(如果没有,您将没有提示)</p>
<p>请随时提问。<br/>
希望这对你有帮助</p>
<hr/>
<pre><code>from threading import Thread
from time import sleep
import random
_TIME_OUT = [False, False]
_TIME_LIMIT = 1
class MyThread(Thread):
def __init__(self, time_out, player):
Thread.__init__(self)
self.time_out = time_out
self.player = player
def run(self):
sleep(self.time_out)
_TIME_OUT[self.player - 1] = True
print('\a', end="") # Make a noise
def main():
_TIME_OUT[0] = False
_TIME_OUT[1] = False
tread_1 = MyThread(_TIME_LIMIT, 1)
n = random.randint(1, 99)
chances = 5
tread_1.start()
print(f"You have {_TIME_LIMIT} sec")
guess = int(input("Player 1 please enter an integer from 1 to 99, you have 5 chances: " ))
while n != "guess" and not _TIME_OUT[0]:
print(not _TIME_OUT, _TIME_OUT)
chances -=1
if chances == 0:
print("out of chances, it is now player 2's turn to play. The number was", n)
break
if guess < n:
print("guess is low you have",chances,"chances left")
guess = int(input("Enter an integer from 1 to 99: "))
elif guess > n:
print ("guess is high you have",chances, "chances left")
guess = int(input("Enter an integer from 1 to 99: "))
else:
print("you guessed it and have", chances, "chances left")
break
if _TIME_OUT[0]:
print("Sorry, out of time!")
tread_2 = MyThread(_TIME_LIMIT, 2)
n1 = random.randint(1, 99)
chances1 = 0
tread_2.start()
print(f"You have {_TIME_LIMIT} sec")
guess1 = int(input("Player 2 please enter an integer from 1 to 99, you have 5 chances: "))
while n1 != "guess" and not _TIME_OUT[1]:
chances1 +=1
if chances1 ==5:
print("out of chances, the number was", n1)
break
if guess1 < n1:
print("guess is low you have",chances1,"chances left")
guess1 = int(input("Enter an integer from 1 to 99: "))
elif guess > n1:
print ("guess is high you have",chances1, "chances left")
guess1 = int(input("Enter an integer from 1 to 99: "))
else:
print("you guessed it and have", chances1, "chances left")
break
if _TIME_OUT[1]:
print("Sorry, out of time!")
retry=input("would you like to play again? (please choose either 'yes' or 'no' )")
if retry == "yes":
main()
elif retry == "no":
print("Okay. have a nice day! :D ")
else:
print("Invalid input")
if __name__ == "__main__":
main()
</code></pre>