我正在制作一个关于pygame的Tamagotchi项目,在这个早期阶段,程序运行速度非常慢。你有什么提示吗? 还有,有什么方法可以加快它的速度吗?
到目前为止,这是我的代码:
Shared Sub releaseObject(ByVal obj As Object)
Try
System.Runtime.InteropServices.Marshal.ReleaseComObject(obj)
obj = Nothing
Catch ex As Exception
obj = Nothing
End Try
End Sub
答案 0 :(得分:0)
您可以尝试分析代码:
https://docs.python.org/2/library/profile.html
大多数情况下,我认为这是因为你有许多嵌套for循环。其中一些似乎没必要。嵌套for循环在Python中并不快。
你的宽度和高度是恒定的,你不需要在每个刻度线上创建一个全新的空网格。
import copy
empty_grid = [[0] * width for _ in range(height)]
def make_empty_grid():
return copy.deepcopy(empty_grid)
不是将项目复制到网格中,而是绘制网格,为什么不直接调用draw_item调用pygame.draw?因为它是在整个网格上迭代两次 - 一旦将项目放入网格中,一旦绘制网格。
编辑:这可能是一个糟糕的建议,我看到即使是值为0的网格元素也会绘制出与背景不同的颜色。我不确定你在做什么。
答案 1 :(得分:0)
每次都不需要重新计算空网格。将它作为“背景图像”存储在表面中,然后每次只需blit
它到屏幕上,而不是清除它,重新计算它,然后将它blitting。此外,绘制项目时只绘制项目而不是整个屏幕。您可以使用display.update并传递旧的和新的项目,因为它们是唯一正在改变的事物。
您还应该将项目存储为曲面或精灵,而不是每次都通过循环重新计算它们。