Python 2中实现指令非阻塞冷却功能的方法咨询 附现有代码
Python技能非阻塞冷却实现方案
我们使用Python标准库time模块实现冷却逻辑,全程不会阻塞其他指令的正常调用,完全适配你现有代码结构,修改成本极低。
核心实现逻辑
- 给需要加冷却的技能单独设置两个变量:
冷却时长(单位:秒)、上次成功使用技能的时间戳 - 每次触发该技能时,先计算当前时间与上次使用时间的差值,差值小于冷却时长则提示冷却中,不执行技能效果
- 差值满足冷却要求则执行技能逻辑,同时更新
上次成功使用技能的时间戳为当前时间 - 仅在触发对应技能时做时间差校验,完全不影响其他指令的正常运行
修改后的完整代码
我们以给R技能(重拳)加3秒冷却为例,你可以自行调整冷却时长,或者给E技能也添加相同逻辑:
import time # 导入时间模块,用于计算冷却 while True: dummy = 300 standopt = input("Choose between TWHV and SP (DUMMY MECHANIC UNFINISHED FOR SP).\nIf you already chose a Stand, you're choosing again due to the dummy's hospitalisation.") if standopt.lower() == "twhv": # 简化判断逻辑,统一转小写不用写多个条件 # 初始化冷却相关变量,每次选完角色重置冷却状态 r_cooldown = 3 # R技能冷却时长3秒,可自行修改 last_r_use = 0 # 记录上次R技能成功使用的时间,初始为0代表从未使用过 while True: if dummy >= 1: Action = input("Your Stand awaits instructions...(e, r)").lower() # 统一转小写简化判断 if Action == "e": print("Barrage (28)") dummy -= 28 print(f"Your dummy is now on {dummy} HP.") elif Action == "r": current_time = time.time() # 获取当前时间戳 # 检查是否满足冷却要求 if current_time - last_r_use < r_cooldown: remaining = round(r_cooldown - (current_time - last_r_use), 1) print(f"Heavy Punch还在冷却中,剩余{remaining}秒!") continue # 跳过后续执行,不触发技能效果 # 冷却结束,执行技能逻辑 print("Heavy Punch (30)") dummy -= 30 print(f"Your dummy is now on {dummy} HP.") last_r_use = current_time # 更新R技能上次使用时间
可调整说明
- 若需要给E技能也添加冷却,只需要新增
e_cooldown和last_e_use两个变量,在E技能的判断逻辑里加相同的时间校验即可 - 修改
r_cooldown的数值即可调整冷却时长,单位为秒 - 原有代码的所有功能都正常保留,仅新增了冷却校验逻辑
内容的提问来源于stack exchange,提问作者Saturdatwal
相关产品推荐
相关产品推荐

