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

Pygame分数显示不更新问题:拾取硬币后数值变更但界面无刷新

Pygame分数不更新问题的修复

错误原因

你在main.py中只在游戏循环外部生成了一次分数Surface(score变量),之后即使level.score的值累加更新,这个Surface的内容不会自动同步变化,循环里一直绘制的是最初生成的旧分数画面。

Pygame的font.render()方法生成的是静态的Surface对象,它不会随传入的变量(比如level.score)自动更新,必须手动重新调用render()来生成新的Surface,才能显示最新的分数。

修正后的代码

将分数渲染的代码移到游戏循环内部,每次循环都基于最新的level.score重新生成分数Surface:

scorefont=pygame.font.Font('Fonts/Pixeltype.ttf',50)
game_active=True
while game_active:
    # 每次循环都重新渲染分数,使用最新的level.score值
    score=scorefont.render('Score: {}'.format(level.score),False,'White')
    screen.blit(score,(0,0))
    
    # 记得补充处理游戏事件、刷新屏幕的代码(比如pygame.event.get()、pygame.display.flip())

可选优化(非必需)

如果担心频繁调用render()影响性能,可以在Level类中添加分数变化的触发机制(比如设置一个score_updated标志),只在分数确实变化时重新渲染分数Surface。但对于这类简单的2D游戏,直接在循环中每次渲染的性能影响几乎可以忽略,代码也更简洁易维护。

内容的提问来源于stack exchange,提问作者22S3-C alden limyuhong

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 09:42:31