Pygame没有

2024-10-04 11:34:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我在做一个项目需要帮助。这是康威人生游戏的一个版本。 这个游戏现在由3个文件组成:主.py, 手机板.py, 细胞.py在

在主.py注意实例化cellboard并使其更新数据,给它鼠标输入,并告诉它自己绘制(pygame曲面的一个实例被赋予它,它将其处理到实际绘制自己的单元)

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

在细胞.py包含细胞可以做的所有事情:死亡、存活、切换、绘制。在

实际上,当我需要绘制整个电路板时,我只调用cellBoard自己的draw(),它应该负责调用每个单元的draw。确实如此。 执行到应该绘制单元格(通过打印进行检查)和执行像素填充函数(使用for循环覆盖一个区域)的点。但实际上屏幕上什么也没有,或者至少什么也看不见。在

我不知道是什么引起的。我检查了多次代码,我甚至从头开始重写整个程序,使它更整洁(我也遇到了和现在一样的问题)

是什么造成的?我的想法是,不管怎么说,surface Cell得到的实例不再适合工作,因为它发生了一些事情(它在到达每个细胞之前都要经过cellboard,这可能是问题所在吗?)在

这是源代码(所有3个文件,它们都非常简短,所以应该很容易阅读)http://dl.dropbox.com/u/2951174/src.zip

提前感谢任何愿意帮忙的人。我需要完成这个项目非常快,所以你的帮助将不胜感激。在


Tags: 文件项目实例py游戏列表屏幕绘制
1条回答
网友
1楼 · 发布于 2024-10-04 11:34:39

第一个快速建议:
如果人们不必下载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)坏的。在

与其单独设置每个像素(速度慢且当前状态下无法正确绘制单元格),不如绘制矩形:

^{pr2}$

相关问题 更多 >