首先,我对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, ...)
然后它将绘制我的细胞。任何帮助都会受到赞赏,因为我非常难过。
答案 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
而不是size
在image
初始化。
您还需要指定rect
位置,因此请将其放在Cell.__init__()
中的某处:
self.rect.x = self.posx
self.rect.y = self.posy
很少注意到:
self.variable
代替variable
(例如: self.size
而不仅仅是size
),因为您可以在课堂的任何地方使用它pygame.quit()
放在程序的最后(while
循环之后)