所以我试图显示我的 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 库但没有成功,有关于如何解决该问题的提示吗?
你已经很接近了!
在
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()
也是个好主意。