如何停止用户输入,直到需要它?

时间:2019-03-26 13:44:59

标签: python python-3.x

可以通过在敌人出现之前按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()

1 个答案:

答案 0 :(得分:1)

据我所知没有办法做到这一点。用户输入(至少在类似Unix的OS中)的读取方式与文件一样,并且如果用户在读取内容之前键入内容,它们将被“排队”,以供您的程序稍后处理。

游戏最常用的解决方案是多线程,其中一个线程读取用户的输入(并在程序不期望的时候忽略他们输入的任何内容),而另一个线程执行主游戏循环。请记住,这比简单的程序复杂得多,并带来了与并发相关的各种问题。