我的程序不会在 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()