如何让每100积分兑换5生命值的逻辑仅触发一次?
解决方案
问题核心是没有记录已触发奖励的分数阈值,导致分数停留在100倍数时,每次调用函数都会重复发放生命值。通过新增跟踪变量即可解决:
修改后的代码
def increase_lives(): global lives global score global extralives global last_reward_score # 新增全局变量,跟踪已奖励的最高分数阈值 # 快捷键触发(保留原有逻辑) if keyboard.lctrl and keyboard.ralt: extralives = 1 # 分数达标且未触发过该阈值的奖励 elif score % 100 == 0 and score != 0 and score > last_reward_score: extralives = 1 last_reward_score = score # 更新阈值,避免重复触发 if extralives == 1: lives += 5 extralives -= 1
关键修改点
- 新增
last_reward_score全局变量,需在脚本开头提前定义初始值(比如last_reward_score = 0) - 分数判断条件新增
score > last_reward_score,确保只有当分数超过上一次奖励的阈值时才触发 - 触发奖励后立即更新
last_reward_score为当前分数,避免同一分数段重复发放 - 用
elif分隔快捷键和分数触发逻辑,避免两种条件同时触发时的冲突
全局变量初始化示例
在脚本开头定义所有全局变量的初始值(按你的实际需求调整):
lives = 3 score = 0 extralives = 0 last_reward_score = 0
内容的提问来源于stack exchange,提问作者SunkyThaN00b253
相关产品推荐
相关产品推荐

