Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在pygame中是否有更好的方法为场景创建实例对象?_Python_Oop_Pygame - Fatal编程技术网

Python 在pygame中是否有更好的方法为场景创建实例对象?

Python 在pygame中是否有更好的方法为场景创建实例对象?,python,oop,pygame,Python,Oop,Pygame,我想在pygame中在我的游戏中创建一个场景,但我似乎必须在每个单独的精灵和障碍物中单独渲染,并且随着场景变得越来越大,它变得有点。。。重复的 self.tree01 = Obstacles(config.tree01, 0, 10, self.player.group) self.tree02 = Obstacles(config.tree01, 1, 10, self.player.group) self.tree03 = Obstacles(config.tree0

我想在pygame中在我的游戏中创建一个场景,但我似乎必须在每个单独的精灵和障碍物中单独渲染,并且随着场景变得越来越大,它变得有点。。。重复的

    self.tree01 = Obstacles(config.tree01, 0, 10, self.player.group)
    self.tree02 = Obstacles(config.tree01, 1, 10, self.player.group)
    self.tree03 = Obstacles(config.tree01, 2, 10, self.player.group)
    self.tree04 = Obstacles(config.tree01, 3, 10, self.player.group)
    self.tree05 = Obstacles(config.tree01, 4, 10, self.player.group)
    self.tree06 = Obstacles(config.tree01, 5, 10, self.player.group)
    self.tree07 = Obstacles(config.tree01, 6, 10, self.player.group)
    self.tree08 = Obstacles(config.tree01, 7, 10, self.player.group)
    self.tree09 = Obstacles(config.tree01, 8, 10, self.player.group)
    self.tree10 = Obstacles(config.tree01, 9, 10, self.player.group)
    self.tree11 = Obstacles(config.tree01, 10, 10, self.player.group)
    self.tree12 = Obstacles(config.tree01, 11, 10, self.player.group)
    self.tree13 = Obstacles(config.tree01, 12, 10, self.player.group)
    self.tree14 = Obstacles(config.tree01, 13, 10, self.player.group)
    self.tree15 = Obstacles(config.tree01, 14, 10, self.player.group)
    self.tree16 = Obstacles(config.tree01, 15, 10, self.player.group)
    self.tree17 = Obstacles(config.tree01, 16, 10, self.player.group)
这就是我目前如何创建我的对象和。。。那不可能是对的。我的班级在这里。是否有一种方法可以创建上面所有这些对象,并以简化的方式创建它们的特定属性?我曾想过在for循环中创建它们,但这并没有给它们单独的属性

class Obstacles(pygame.sprite.Sprite):
    def __init__(self,image, x, y, player):
        pygame.sprite.Sprite.__init__(self)
        self.image = image
        self.rect = self.image.get_rect()
        self.player = player
        self.rect.x = x * config.scale
        self.rect.y = y * config.scale
        self.check_collision = False

        self.rect.topleft = self.rect.x, self.rect.y

        self.groupObs = pygame.sprite.Group()
        self.groupObs.add(self)
        self.check_collide()


    def draw(self, screen):
        self.groupObs.draw(screen)
        self.rect.topleft = self.rect.x, self.rect.y
您可以使用
list()
dict()
存储属性:

self.trees = [Obstacles(config.tree01, x, 10, self.player.group) for x in range(16)]
然后您只需通过索引访问它们:
self.trees[5]
而不是
self.tree05


如果您不理解这种语法,那么查找列表理解基本上是一个
for
循环,但更短。

哦,我不知道这会起作用。非常感谢你!