即使分数变量发生变化,显示的分数也不会更新[重复]

问题描述 投票:0回答:1
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,但分数变量发生变化。

python python-3.x pygame
1个回答
1
投票

在您的代码中,您仅更改分数变量,正如您所说的正在更新。另一方面,您永远不会更新渲染到屏幕上的输出。所以发生的情况是,score_surf 和score_rect 在初始化后永远不会改变。你想做的是地方

score_surf = test_font.render(str(score), True, "Black")
score_rect = score_surf.get_rect(center = (400, 150))

在 while 循环内,以便它们更新每一帧。因为您没有显示分数变量,而是显示分数冲浪。

我希望这有帮助

© www.soinside.com 2019 - 2024. All rights reserved.