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

Pygame中分数变量已更新但显示分数未同步问题

问题原因

你代码里的score_surf只在程序启动时渲染了一次初始值0,之后score变量虽然每秒递增,但没有重新生成新的文字表面,屏幕上一直显示的是最初创建的那个0的表面,所以看不到更新。

解决方法

每次score变化后,必须重新调用test_font.render()生成新的分数表面,替换原来的score_surf。更稳妥的方式是把渲染操作放到游戏主循环里,确保每帧都能根据最新的score更新显示内容。

修改后的完整代码
import pygame
from sys import exit

pygame.init() ### pozwala wykonywać funkcje pygame-a po tym jak jest wywołana

screen = pygame.display.set_mode((800, 400)) ### ustalamy rozdzielczość okna gry

pygame.display.set_caption("Balls") ###zmienia tytół okienka gry

clock = pygame.time.Clock() ### tworzy "zegar", który pomaga na kontrolować fps-y itd

bck = pygame.Surface((800, 400))
bck.fill("White")

#pygame.font.Font(rodzaj czcionki, rozmiar czcionki)
test_font = pygame.font.Font(None, 60)
#text_surface = test_font.render("text", wygładzanie krawędzi textu, "color")
    

score = 0
score_rect = pygame.Rect(0,0,0,0)  # 先初始化rect,后续用渲染后的surface获取
sh = 0

while True:
    ### tutaj będzie wszystko wyświetlane, oraz klatki będą aktualizowane
    for event in pygame.event.get(): ### sprawdzanie inputu użytkownika

        if event.type == pygame.QUIT: ### wykrywanie czy użytkownik zamyka okno gry
            pygame.quit() ###przeciwieństwo inicjalizacji pygame, kończy działanie modułu
            exit() ### kończy wykonywanie załego programu


    screen.blit(bck, (0, 0))

    # 每次循环都重新渲染分数表面,确保显示最新值
    score_surf = test_font.render(str(score), True, "Black")
    score_rect = score_surf.get_rect(center = (400, 150))
    screen.blit(score_surf, score_rect)
    
    sh += 1
    if sh == 60:
        sh = 0
        score += 1
        print(score)

    
    clock.tick(60)
    pygame.display.update() ### generuje klatkę
关键修改点
  • 把score_surf的渲染和score_rect的获取移到了主循环内部,每帧都会根据当前score的值生成新的文字表面
  • 初始化时不再提前创建score_surf,而是在循环里动态生成

这样修改后,屏幕上的分数就会和控制台打印的数值同步更新了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 11:39:35