Pygame不画画

时间:2010-11-20 22:38:44

标签: python pygame draw

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

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

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

cell.py包含了一个单元格可以做的所有事情:死,活,被切换,被绘制。

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

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

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

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

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

1 个答案:

答案 0 :(得分:5)

快速建议的第一步:
如果他们不必下载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()

您需要将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))