我的程序不会在 Pygame 中绘制椭圆
My Program Will Not Draw An Ellipse in Pygame
我是 python 和 pygame 的新手,我似乎不会画椭圆。
请帮忙!
我是 运行 这个 python3.10.
下面是所有源代码。
我唯一的怀疑是这段代码在 python2 中,因为我曾经在 python2 中编码,然后我停止了,所以 python3 对我来说是新的。
谁解决了,万分感谢!!
from pygame import *
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 = 1
dy = 2
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)
没有绘制椭圆,因为您忘记更新 while
循环内的显示。只需在 while
循环的底部键入 pygame.display.update()
或 display.update()
即可。
代码
from pygame import *
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 = 1
dy = 2
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()
编辑
问这个问题的人也有滞后的问题。游戏滞后是因为负责绘制和移动椭圆的代码在事件循环内 (for event in event.get()
)。因此,要修复延迟,只需将该代码移至循环之后即可。
修改代码
from pygame import *
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 = 1
dy = 2
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()
我是 python 和 pygame 的新手,我似乎不会画椭圆。 请帮忙!
我是 运行 这个 python3.10.
下面是所有源代码。
我唯一的怀疑是这段代码在 python2 中,因为我曾经在 python2 中编码,然后我停止了,所以 python3 对我来说是新的。
谁解决了,万分感谢!!
from pygame import *
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 = 1
dy = 2
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)
没有绘制椭圆,因为您忘记更新 while
循环内的显示。只需在 while
循环的底部键入 pygame.display.update()
或 display.update()
即可。
代码
from pygame import *
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 = 1
dy = 2
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()
编辑
问这个问题的人也有滞后的问题。游戏滞后是因为负责绘制和移动椭圆的代码在事件循环内 (for event in event.get()
)。因此,要修复延迟,只需将该代码移至循环之后即可。
修改代码
from pygame import *
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 = 1
dy = 2
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()