我的程序非常滞后。我用 Python/Pygame

My Program Is Very Laggy. I use Python/Pygame

我正在尝试制作一个球从 window 的边缘反弹的游戏。我的问题是它太慢了。我不知道为什么。我正在使用 python3.10 和 pygame。谁能找到答案,万分感谢。下面是我的游戏的源代码。如果您修复了它,请将源代码保留给已修复的游戏,因为我是 python 的新手,可能会搞砸自己把它放进去。哈哈

import pygame

init()

S0 = 640
S1 = 480

screen = display.set_mode((S0, S1))
display.set_caption("Zero-Player-Game")

clock = pygame.time.Clock()

x = 10
y = 10

dx = 2
dy = 1

Black = (0, 0, 0)
White = (255, 255, 255)

p_size = 50

end = False

while not end:
    for e in event.get():
        if e.type == QUIT:
            end = True
        x += dx
        y += dy
        if y < 0 or y > S1 - p_size:
            dy *= -1
        if x < 0 or x > S0 - p_size:
            dx *= -1
        screen.fill(Black)
        draw.ellipse(screen, White, (x, y, p_size, p_size))
        clock.tick(100)
        pygame.display.update()

您已将主要游戏逻辑添加到事件循环而不是游戏循环中。简而言之,事件循环仅在事件发生时 运行s,因此球仅在 window 上发生事件(在本例中为鼠标移动)时才会移动。要解决此问题,您只需将所有主要游戏循环逻辑放在事件循环之外。

# Game loop
while not end:
    # Event loop
    for e in event.get():
        if e.type == QUIT:
            end = True
    # Game logic
    x += dx
    y += dy
    if y < 0 or y > S1 - p_size:
        dy *= -1
    if x < 0 or x > S0 - p_size:
        dx *= -1
    screen.fill(Black)
    draw.ellipse(screen, White, (x, y, p_size, p_size))
    clock.tick(100)
    display.update()

游戏循环将始终运行每一帧,因此球会平稳移动。