可以通过在敌人出现之前按Enter或输入任何输入来欺骗该游戏。 有没有办法在有必要之前暂停用户输入,以使此代码正常工作?
import random
import os
hp = 20
Shp = str(hp)
score = 0
def shoot():
hp = 20
score = 0
while hp > 0:
wait = random.randint(1, 7)
time.sleep(wait)
os.system("clear")
print("An Enemy!")
now = time.time()
hit = input("")
if time.time() - now < 0.4:
print("You hit them!")
score = score+1
time.sleep(1)
os.system('clear')
else:
print("They hit you first.")
hp = hp-5
time.sleep(1)
os.system('clear')
print("Game over. You scored", score)
print("When an enemy appears, press ENTER to shoot.\n You start with "+Shp+"HP, if the enemy hits you before you hit them, you lose HP.\n\n Press ENTER to begin.")
start = input("")
os.system('clear')
shoot()
答案 0 :(得分:1)
据我所知没有办法做到这一点。用户输入(至少在类似Unix的OS中)的读取方式与文件一样,并且如果用户在读取内容之前键入内容,它们将被“排队”,以供您的程序稍后处理。
游戏最常用的解决方案是多线程,其中一个线程读取用户的输入(并在程序不期望的时候忽略他们输入的任何内容),而另一个线程执行主游戏循环。请记住,这比简单的程序复杂得多,并带来了与并发相关的各种问题。