无法在我的pygame项目中绘制字体
我在做一个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库,但没有成功。有没有什么建议可以帮我解决这个问题?
1 个回答
-1
你已经很接近了!
在 def bgdisplay(player1, elapsed_time)
这个函数里,你需要确保在更新显示屏 pygame.display.update()
之前,所有你想要绘制的内容都已经画好了,不管是通过什么方式。
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.update() # <- This was moved to the bottom of the fn