似乎无法将字体 blit() 到我的 pygame 项目中

问题描述 投票:0回答:1

所以我试图显示我的 pygame 项目中的剩余时间,从我看来它没有任何语法错误或任何东西,但它也没有在屏幕上显示我需要的内容,这是代码:

import pygame
import time
import random
pygame.font.init()

#Windown Setup
WIDTH, HEIGHT = 1280, 700
WIN = pygame.display.set_mode((WIDTH, HEIGHT))
pygame.display.set_caption("Pong Wars")
BG = pygame.transform.scale(pygame.image.load("bggame.jpeg"), (WIDTH, HEIGHT))

#Player variables
PLAYERHEIGHT = 130
PLAYERWIDTH = 20
PLAYERVELOCIT = 8

FONTE = pygame.font.SysFont("book", 30)
#functions
def bgdisplay(player1, elapsed_time):

    WIN.blit(BG, (0, 0))
    pygame.draw.rect(WIN, "black", player1)
    pygame.display.update()
    time_text = FONTE.render(f"Time: {round(elapsed_time)}s", 1, "white")
    WIN.blit(time_text, (10, 10))
    

def main():
    run = True

    player1 = pygame.Rect((40, 350), (PLAYERWIDTH, PLAYERHEIGHT))
    clock = pygame.time.Clock()
    start_time = time.time()
    elapsed_time = 0

    while run:
        clock.tick(60)
        elapsed_time = time.time() - start_time
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                run = False
                break

        keys = pygame.key.get_pressed()
        if keys[pygame.K_w] and player1.y - PLAYERVELOCIT  >= 0:
            player1.y -= PLAYERVELOCIT
        if keys[pygame.K_s] and player1.y + PLAYERVELOCIT + player1.height <= HEIGHT:
            player1.y += PLAYERVELOCIT

        bgdisplay(player1, elapsed_time)
    pygame.quit()

#Filename Check
if __name__ == "__main__":
    main()

我尝试使用 freetype 库但没有成功,有关于如何解决该问题的提示吗?

python pygame
1个回答
0
投票

你已经很接近了!

def bgdisplay(player1, elapsed_time)
中,您需要确保在您需要绘制的所有内容都已以某种方式渲染之后更新您的显示。

def bgdisplay(player1, elapsed_time): WIN.blit(BG, (0, 0)) pygame.draw.rect(WIN, "white", player1) time_text = FONTE.render(f"Time: {round(elapsed_time)}s", True, "white") WIN.blit(time_text, (100, 10)) # pygame.display.flip() pygame.display.update()
请注意,

pygame.display.update()

调用发生在绘制完所有内容之后。

FWIW,使用

display.flip()

也是个好主意。

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