我的程序非常滞后。我用 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()
游戏循环将始终运行每一帧,因此球会平稳移动。
我正在尝试制作一个球从 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()
游戏循环将始终运行每一帧,因此球会平稳移动。