如何确保游戏中的生命值奖励逻辑只触发一次

霞舞

霞舞

2026-07-30

147人浏览

原创

如何确保游戏中的生命值奖励逻辑只触发一次

本文介绍在 pygame/pgzero 游戏开发中,如何避免因帧循环导致的重复触发问题,通过引入里程碑变量(milestone)精准控制“每100分奖励5条命”逻辑仅执行一次。

本文介绍在 pygame/pgzero 游戏开发中,如何避免因帧循环导致的重复触发问题,通过引入里程碑变量(milestone)精准控制“每100分奖励5条命”逻辑仅执行一次。

在基于帧循环的游戏主循环(如 PGZero 的 update() 函数)中,所有逻辑每秒执行数十次。若直接使用 score % 100 == 0 判断奖励条件,当玩家得分恰好为 100、200、300 等整百数时,该条件会在连续多帧内持续为真(直到分数变化),从而反复触发奖励,导致一次性获得远超预期的生命值。

根本原因在于:score % 100 == 0 是一个状态判断,而非事件检测。我们需要将其转化为“分数首次达到某整百值”这一一次性事件。

✅ 正确解法:引入 milestone 变量记录上一次已处理的整百分数点:

unity3d游戏开发之相机切换 中文WORD版
unity3d游戏开发之相机切换 中文WORD版

本文档主要讲述的是unity3d游戏开发之相机切换;希望对大家会有帮助;感兴趣的朋友可以过来看看

下载
# 全局变量(需在程序初始化时定义)
lives = 3
score = 0
extralives = 0
milestone = 0  # 记录最近一次已发放奖励的分数里程碑

def update():
    global lives, score, extralives, milestone

    # 关键:仅当分数是100的倍数、非零、且尚未在此分数点触发过奖励时才标记
    if (score % 100 == 0 and score != 0 and score != milestone) or (keyboard.lctrl and keyboard.ralt):
        extralives = 1
        milestone = score  # 锁定当前分数为已处理里程碑

    # 统一处理奖励发放
    if extralives == 1:
        lives += 5
        extralives = 0  # 注意:此处用赋值0更清晰,避免减法潜在问题

? 关键要点说明:

  • milestone 初始设为 0,确保 score=100 时 100 != 0 成立,首次可触发;
  • 每次成功触发后立即更新 milestone = score,使后续帧中 score != milestone 为 False,阻断重复执行;
  • extralives 作为“待处理标志”,解耦条件判断与执行逻辑,提升可读性与可维护性;
  • 使用 extralives = 0(而非 -= 1)更安全——避免因意外多次进入该分支导致负值。

⚠️ 注意事项:

  • 确保 milestone 在全局作用域正确定义并初始化(例如在 import 后或 def init(): 中设置);
  • 若支持分数减少(如扣分),需额外逻辑重置 milestone(例如 if score
  • 此模式同样适用于其他周期性事件,如每500分播放音效、每关卡切换背景等。

通过将“状态检查”升级为“事件去重”,你就能让游戏逻辑既精准又可靠——每一次奖励,都恰如其分。

相关专题

更多
火山引擎云服务器使用教程
火山引擎云服务器使用教程

火山引擎云服务器使用教程适合第一次购买、部署和管理云服务器的用户参考。本专题整理控制台入口、实例创建、地域和配置选择、系统镜像设置、安全组放行、远程连接、网站部署、续费计费和常见连接失败问题,帮助用户快速完成云服务器基础使用流程。

2026.08.04

0

10

火山引擎API Key绑定大模型教程
火山引擎API Key绑定大模型教程

火山引擎API Key怎么绑定大模型适合需要在火山方舟、应用后台、脚本工具或AI编程软件中调用模型的开发者参考。本专题整理控制台服务开通、API Key创建、模型权限检查、模型ID选择、Base URL填写、调用测试和鉴权失败排查,帮助用户完成从密钥到模型调用的配置流程。

2026.08.04

0

10

火山引擎API Key获取教程
火山引擎API Key获取教程

火山引擎API Key适合需要调用火山引擎云服务、AI模型、火山方舟接口或其他开放能力的开发者参考。本专题整理控制台入口、账号认证、服务开通、API Key创建、密钥复制保存、权限检查、调用测试和Key无效等常见问题排查。

2026.08.04

4

10

火山引擎API接入教程
火山引擎API接入教程

火山引擎API接入适合需要在应用、脚本、后台服务或AI工具中调用火山引擎能力的开发者参考。本专题整理控制台入口、服务开通、API Key获取、接口地址配置、请求参数填写、调用测试、权限设置、额度查询和常见接口报错排查。

2026.08.04

4

10

火山引擎DeepSeek API调用教程
火山引擎DeepSeek API调用教程

火山引擎DeepSeek API适合需要在应用、脚本、智能体或AI编程工具中调用DeepSeek模型的开发者参考。本专题整理火山引擎控制台入口、模型服务开通、API Key获取、Base URL配置、模型名称填写、调用测试、额度查询和常见接口报错排查。

2026.08.04

2

10

火山引擎控制台操作教程
火山引擎控制台操作教程

火山引擎控制台中常用功能包括API密钥管理、模型调用配置、云资源查看、账单明细、用量统计和权限分配。本专题整理控制台基础操作、服务开通流程、Key创建与保存、费用消耗查看、子账号权限设置和调用失败排查,方便开发者完成日常管理。

2026.08.04

3

10

PDF与PPT格式转换操作方法及在线转换技巧
PDF与PPT格式转换操作方法及在线转换技巧

本专题聚焦 PDF 与 PPT 文件格式转换需求,整理 PDF 转 PPT 在线转换方法、PPT 批量转换 PDF 操作步骤、转换后格式错乱处理以及文档版式检查技巧。通过详细教程帮助用户掌握 PDF、PPT 双向转换方法,解决演示文稿制作、文件整理和办公格式转换中的常见问题,提高办公效率。

2026.07.31

112

6

PDF合并文件操作方法与在线批量合并技巧
PDF合并文件操作方法与在线批量合并技巧

本专题聚焦 PDF 文件合并与文档整理需求,整理多个 PDF 合并成一个文件、图片批量转换 PDF、合同附件合并发送以及在线 PDF 合并操作方法等实用教程。通过详细步骤介绍 PDF 合并流程、文件顺序检查技巧和免费在线合并方案,帮助用户快速整理零散文档,提高办公文件处理效率。

2026.07.31

90

8

PDF转Word在线转换与文档编辑处理方法
PDF转Word在线转换与文档编辑处理方法

本专题聚焦 PDF 转 Word 文件转换与办公文档处理需求,整理 PDF 在线转换成 Word、PDF 转可编辑 Word、PDF 文件格式转换操作步骤以及转换后版式错乱、图片无法编辑等常见问题解决方法。通过详细教程帮助用户快速掌握 PDF 转 Word 技巧,提高办公文件处理效率。

2026.07.31

90

5

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
C++教程
C++教程

共115课时 | 38.9万人学习