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_surf = test_font.render(str(score), True, "Black")
score_rect = score_surf.get_rect(center = (400, 150))
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))
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ę
如果运行代码,显示分数为0,但分数变量发生变化。
在您的代码中,您仅更改分数变量,正如您所说的正在更新。另一方面,您永远不会更新渲染到屏幕上的输出。所以发生的情况是,score_surf 和score_rect 在初始化后永远不会改变。你想做的是地方
score_surf = test_font.render(str(score), True, "Black")
score_rect = score_surf.get_rect(center = (400, 150))
在 while 循环内,以便它们更新每一帧。因为您没有显示分数变量,而是显示分数冲浪。
我希望这有帮助