You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Pygame 碰撞触发后得分文本固定显示不消失的实现咨询

Pygame 得分文本永久显示解决方案

核心逻辑是新增状态标记变量记录是否触发过首次碰撞,只要标记为真就每帧固定绘制文本,不需要依赖实时碰撞判定。

实现步骤

  • 游戏初始化时新增布尔变量标记文本显示状态,默认值为False,同时提前预渲染得分文本(避免每帧重复渲染消耗性能)
  • 保留原碰撞判定逻辑,首次碰撞时仅修改状态标记为True,无需在碰撞分支里绘制文本
  • 主循环的全局绘制逻辑中新增判断:只要状态标记为True,每帧都执行文本绘制操作

代码示例

初始化阶段新增代码

# 初始化显示标记
show_score = False
# 提前预渲染得分文本,仅需执行一次
font = pygame.font.SysFont(None, 48)
text = font.render("Points: 0", True, (255, 255, 255))

主循环修改代码

# 原有碰撞判定逻辑调整
if Rect_player.colliderect(Begin_Rum):
    show_score = True
    Begin_ColorShape = (0,0,0)
    Y -= 990

# 全局绘制区域新增:每帧判断是否显示文本,和碰撞状态无关
if show_score:
    screen.blit(text, (60, 60))

注意事项

你当前的示例代码里碰撞对象拼写为Begim_Rum,和你定义的触发方块名Begin_Rum不一致,建议修正避免碰撞判定失效。
后续需要更新得分数值时,仅需重新执行text = font.render(f"Points: {score}", True, (255,255,255))更新文本内容即可,显示状态无需修改。

内容的提问来源于stack exchange,提问作者Pensathor

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 17:24:02