1 回答

TA貢獻1810條經驗 獲得超4個贊
性能下降是由于您 self.drawMap()在事件循環中調用而引起的。每個事件調用一次事件循環。每幀可能發生多個事件,尤其是在移動鼠標時。
我建議僅在需要時創建地圖。將地圖渲染為pygame.Surface對象,blit并將地圖Surface渲染到每一幀的顯示器上。當地圖發生變化時,重新創建地圖Surface。
創建一個在目標Surface上而不是直接在顯示Surface上呈現的“draw”方法:
def drawMap(self, traget_surf):
# draw on traget_surf
# [...]
添加一個變量map_surf和map_changed = True. map_changed如果已設置和設置,則在應用程序循環中渲染地圖map_changed == False。Surface在每一幀中顯示blit。每當需要更改地圖時,設置以下內容就足夠了:map_surf map_changed = True
map_surf = pygame.Surface(display_surf.get_size())
map_changed = True
while nbPixel < 50:
# [...]
if map_changed:
self.drawMap(map_surf)
map_changed = False
# [...]
display_surf.blit(map_surf, (0, 0))
display_surf.blit(imageWall, tuple(blockAbovePos))
display_surf.blit(imageTarget, tuple(newPos))
display_surf.blit(imageWall,tuple(initPosToBlit))
display_surf.blit(imagePlayer, tuple(mousePos))
添加回答
舉報