为什么我的pygame代码没有绘制这个圆圈?

时间:2015-06-28 16:41:28

标签: python pygame surface

http://pastebin.com/PLdiNg9d

首先,我对Python很陌生,对于非常草率的代码感到抱歉!无论如何,在我的问题上。我创建了一个类单元格,在它的init函数中,它接受了几个用于绘制圆形的变量。然后我这样做:

self.image = pygame.Surface([size, size])
self.image.fill(WHITE)
self.image.set_colorkey(WHITE)
pygame.draw.circle(self.image, color, [posx, posy], size)
self.rect = self.image.get_rect()
print('Cell initialized.')

问题是,它不会在我的屏幕上绘制任何内容。它不会输出错误消息,但仍会打印“Cell initialized”。所以我知道它已经完成了 init 功能。

让我感到困惑的是,我有办法让它发挥作用。如果我搬家

cell_list = pygame.sprite.Group()
a = Cell(5, GREEN, 2, 200, 200)
cell_list.add(a)

进入我的while循环,并更改

pygame.draw.circle(self.image, ...)

pygame.draw.circle(screen, ...)

然后它将绘制我的细胞。任何帮助都会受到赞赏,因为我非常难过。

2 个答案:

答案 0 :(得分:1)

这是使用pygame时使用的简单模板。该演示在屏幕中央绘制一个圆圈。

from pygame import *
screen = display.set_mode((500,500))
# Fill screen white
screen.fill((255,255,255))

# Draw a red circle at the center
# Remove the 1 to make it a filled circle
draw.circle(screen, (255,0,0), (250,250), 250, 1)

# Game loop
running = True
while running:
    # Properly quit (pygame will crash without this)
    for e in event.get():
        if e.type == QUIT:
            running = False

    display.flip()
quit()

答案 1 :(得分:0)

而不是:

pygame.draw.circle(self.image, color, [posx, posy], size)

使用:

pygame.draw.circle(self.image, color, [size, size], size)

说明:在您的表面(self.image)上,您在坐标0, 0上画圆圈,但因为pygamen.draw.circle需要居中,所以size, size会在这里。

如果您希望在绘图圈中size半径使用size//2而不是size,如果您希望它是直径,请使用size*2而不是sizeimage初始化。

您还需要指定rect位置,因此请将其放在Cell.__init__()中的某处:

self.rect.x = self.posx
self.rect.y = self.posy

很少注意到:

  • 使用self.variable代替variable例如: self.size而不仅仅是size),因为您可以在课堂的任何地方使用它
  • pygame.quit()放在程序的最后(while循环之后)