Pygame不画画

Gab*_*lli 0 python pygame draw

我需要帮助我正在制作的程序.这是康威生命游戏的一个版本.这个游戏现在由3个文件组成:main.py,cellBoard.py,cell.py

main.py关注实例单元格并使其更新数据,给它鼠标输入,并告诉它自己绘制(pygame表面的一个实例被赋予它,它将它处理到实际的单元格中画自己)

cellboard.py根据大小和屏幕大小创建单元格列表,以便正确填充它.这是一个2D列表.当它创建单元格时,它设置它们的状态(当前是活动的)并处理它们原始表面实例的实例的实例.

cell.py包含一个单元格可以执行的所有操作:die,live,toggled,be drawn.

事实上,当我需要绘制整个棋盘时,我只需要调用cellBoard自己的draw(),它应该注意调用每个单元格的绘制.确实如此.执行到达应该绘制单元格的点(用打印检查)并执行像素填充功能(使用for循环覆盖区域).但实际上屏幕上没有任何内容,或者至少看不到任何内容.

我不知道造成这种情况的原因.我多次检查代码,我甚至从头开始重写整个程序,使其更整洁(我现在遇到了同样的问题)

是什么造成的?我的想法是,不知何故表面Cell得到的实例不再好用,因为发生了一些事情(它在到达每个单元格之前经过了单元板,这可能是问题吗?)

这是源代码(所有3个文件,它们非常简短和准确,因此它们应该易于阅读)http://dl.dropbox.com/u/2951174/src.zip

提前感谢任何想要帮助的人.我需要非常快速地完成这个项目,所以非常感谢您的帮助.

Ivo*_*zel 6

第一个快速建议:
如果他们不必下载zip文件,人们更有可能帮助你,下次只发布你怀疑不能工作的代码部分.

无论如何,问题似乎在你的主循环中:

#Keyboard events
events = pygame.event.get()
for event in events:
    if event.type == pygame.QUIT:
        running = 0

#Mouse events
#todo

#Grid update  <------- here you update the grid and the cells are being drawn
cb.draw()

#Graphical output    <------------ here you're filling the WHOLE screen with white
screen.fill(THECOLORS["white"])    

pygame.display.flip()
Run Code Online (Sandbox Code Playgroud)

您需要将screen.fill呼叫移到上方,cb.draw这样您就不会在细胞上绘画.

cell.py你的绘图代码中也是A)破碎和B)坏.

而不是自己设置每个像素,这是缓慢的并且在当前状态下不能正确地绘制单元格,您也可以绘制矩形:

pygame.draw.rect(self.surface, (100, 10, 10), (self.pos[0], self.pos[1], self.size, self.size))
Run Code Online (Sandbox Code Playgroud)