重复创建对象的实例而不重复代码



我想制作一款玩家使用Python中的pygame模块点击鸭子的游戏。我想有15只鸭子,但我不想复制用于实例化鸭子并将其分配给变量15次的代码。我的当前代码如下,"eend"是我为鸭子使用的名称:

eend = Actor('eend')
eend._surf = pygame.transform.scale(eend._surf, (50, 50))
eend.pos = 425, 300
eend1 = Actor('eend')
eend1._surf = pygame.transform.scale(eend1._surf, (50, 50))
eend1.pos = 425, 300
eend2 = Actor('eend')
eend2._surf = pygame.transform.scale(eend2._surf, (50, 50))
eend2.pos = 425, 300
eend3 = Actor('eend')
eend3._surf = pygame.transform.scale(eend3._surf, (50, 50))
eend3.pos = 425, 300
eend4 = Actor('eend')
eend4._surf = pygame.transform.scale(eend4._surf, (50, 50))
eend4.pos = 425, 300
eend5 = Actor('eend')
eend5._surf = pygame.transform.scale(eend5._surf, (50, 50))
eend5.pos = 425, 300
eend6 = Actor('eend')
eend6._surf = pygame.transform.scale(eend6._surf, (50, 50))
eend6.pos = 425, 300
eend7 = Actor('eend')
eend7._surf = pygame.transform.scale(eend7._surf, (50, 50))
eend7.pos = 425, 300
eend8 = Actor('eend')
eend8._surf = pygame.transform.scale(eend8._surf, (50, 50))
eend8.pos = 425, 300
eend9 = Actor('eend')
eend9._surf = pygame.transform.scale(eend9._surf, (50, 50))
eend9.pos = 425, 300
eend10 = Actor('eend')
eend10._surf = pygame.transform.scale(eend10._surf, (50, 50))
eend10.pos = 425, 300
eend11 = Actor('eend')
eend11._surf = pygame.transform.scale(eend11._surf, (50, 50))
eend11.pos = 425, 300
eend12 = Actor('eend')
eend12._surf = pygame.transform.scale(eend12._surf, (50, 50))
eend12.pos = 425, 300
eend13 = Actor('eend')
eend13._surf = pygame.transform.scale(eend13._surf, (50, 50))
eend13.pos = 425, 300
eend14 = Actor('eend')
eend14._surf = pygame.transform.scale(eend14._surf, (50, 50))
eend14.pos = 425, 300

创建类Actor的多个实例而不重复代码15次的好方法是什么?

您可以创建一个为您创建鸭子的函数,然后创建一个鸭子列表(而不是将它们作为单独的变量名)。

def create_duck(name='eend', scale=(50, 50), pos=(425, 300)):
eend = Actor(name)
eend._surf = pygame.transform.scale(eend8._surf, scale)
eend.pos = pos
return eend
eends = []
for i in range(14):
eends.append(create_duck())

您也可以将此函数作为Actor类中的类方法

最新更新