我正在使用tkinter和Pygame创建一个模拟,我目前无法优化我的代码。该计划需要绘制500-1000" ant"精灵到表面 - 这些蚂蚁的行为由这个类定义
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的初始化中,粒子的实例创建如下:
self.ants = [Particle('black',1,1) for x in range(500)]
在pygame窗口的事件循环中,当一个" start&#34>按下tkinter中的按钮,执行以下代码:
t = threading.Thread(target=self.startAntMotion)
t.start()
其中startAntMotion()定义如下:
def startAntMotion(self):
for ant in self.ants[0:100]:
ant.updatePos(self.start)
self.surface.blit(ant.image,ant.rect)
pygame.display.update()
我打算在将来为self.ants中的剩余400个对象添加更多线程。当程序运行并按下tkinter中的开始按钮时,蚂蚁需要很长时间。被绘制到屏幕上。有没有什么方法可以优化代码,以便它可以更快地运行?执行时间最长的代码是将精灵实际绘制到屏幕上。
答案 0 :(得分:1)
我没有足够的+ rep来评论但是,加载图像的有效方法是这样写的:pygame.image.load(ANT_SPRITE_PATH).convert_alpha()
让我知道这是否会提升你的表现!