python - 如何添加不需要用户输入的时间限制?
问题描述
我正在为学校编码“挑战”编写一个不太棒的小游戏,我需要为某个动作设置时间限制,同时引入一个按键进入系统。我有一个完整的游戏计时器,但我的游戏是以射击外星人为基础的,我希望在外星人回击之前为每一波设置一个时间限制。另外,我怎样才能为用户输入自动输入?(例如,要射击,您必须按 P,但在游戏中您必须输入 P 然后输入)。
#Main Code
print("An Alien has appeared! They are shooting in 5 seconds!")
#MAIN TIMER START
start = time.time()
decision = input("Will you shoot (P) or deflect (O)?")
if input == "P":
decision = shoot
elif input == "p":
decision = shoot
elif input == "O":
decision = deflect
elif input == "o":
decision = deflect
重新开始()
解决方案
这是您的问题的可能解决方案。
import sys
from select import select
timeout_sec = 5
available_decisions = ['o', 'p']
print("An Alien has appeared! They are shooting in {} seconds!".format(timeout_sec))
print("Will you shoot (P) or deflect (O)?")
if select( [sys.stdin], [], [], timeout_sec ):
user_input = sys.stdin.readline().strip()
user_input = user_input.lower()
if user_input in available_decisions:
print("Your choice:", user_input)
if user_input == "p":
decision = 'shoot'
else:
decision = 'deflect'
else:
print("You're dead!!")
print("Action: {}".format(decision))
您可以在此处和此处阅读有关“sys”和“select”模块的信息。
如果您有更多输入选择,我会使用ENUM。如果输入不正确(数字或其他字符),我也没有输出任何警告,所以你可以多做一点。
推荐阅读
- excel - Excel - 单元格匹配条件的返回值和包含匹配条件的行的最大值
- select - 如何使用 AS 关键字从转换后的日期列中查询
- swift - 从基于 macOS Swift 的应用程序中运行时,Apple 脚本失败
- unity3d - 有没有办法改变 Unity 的视图快捷方式?
- php - 为什么我的阵列不能插入到我的数据库中?
- d3.js - 关于如何从我在 d3 中的数据生成饼图的困惑
- javascript - 如何通过列表项将 React 道具传递给类
- .net - 如何从 VBA 迭代 .NET HashTable 的键
- node.js - 脚本下 package.json 文件中的配置设置
- php - in_array 的奇怪用法