我正在使用tkinter和Pygame创建一个模拟程序,目前在优化代码时遇到了问题。程序需要将500-1000个“蚂蚁”精灵绘制到表面-这些蚂蚁的行为由这个类定义
class Particle(pygame.sprite.Sprite):
def __init__(self,color,width,height):
# call parent class constructor
pygame.sprite.Sprite.__init__(self)
self.image = pygame.image.load(ANT_SPRITE_PATH)
self.rect = self.image.get_rect()
self.WIDTH = width
self.HEIGHT = height
def updatePos(self,pos):
self.rect.x = pos[0]
self.rect.y = pos[1]
在另一个类PyGameWin的初始化中,创建Particle的实例如下所示:
^{pr2}$在pygame窗口的事件循环中,当按下tkinter中的“开始”按钮时,将执行以下代码:
t = threading.Thread(target=self.startAntMotion)
t.start()
其中startMotion()的定义如下:
def startAntMotion(self):
for ant in self.ants[0:100]:
ant.updatePos(self.start)
self.surface.blit(ant.image,ant.rect)
pygame.display.update()
我打算为中剩下的400个对象添加更多线程自我蚂蚁未来。当程序运行并且按下tkinter中的开始按钮时,“蚂蚁”要花很长时间才能显示在屏幕上。有没有什么方法可以优化代码以使它运行得更快?执行时间最长的代码是将精灵实际绘制到屏幕上。在
我没有足够的+rep来评论,但是,一种有效的加载图像的方法是这样写的:
pygame.image.load(ANT_SPRITE_PATH).convert_alpha()
让我知道这是否提高了你的表现!在
相关问题 更多 >
编程相关推荐