遇到新级别时更改精灵图像

时间:2016-08-19 15:41:10

标签: python python-3.x pygame

我们正试图在包含多个级别的pygame中制作游戏。对于特定级别,我们希望显示不同的精灵/图像(例如,级别1 - >女孩角色,级别2 - >船型图像,级别3 - >女孩角色。)

我们在名为player.py的文件中定义了一个玩家类,并尝试定义不同的玩家:

def __init__(self):

    def player1 (self):
        sprite_sheet1 = SpriteSheet("boat0.png")
        image = sprite_sheet1.get_image(29,165,230,49)
        self.walking_frames_r.append(image)
        sprite_sheet2 = SpriteSheet("boat1.png")
        image = sprite_sheet2.get_image(30,168,228,42)
        self.walking_frames_r.append(image)
        sprite_sheet3 = SpriteSheet("boat2.png")
        image = sprite_sheet3.get_image(29,165,230,49)
        self.walking_frames_r.append(image)
        sprite_sheet2 = SpriteSheet("boat1.png")
        image = sprite_sheet2.get_image(30,168,228,42)
        self.walking_frames_r.append(image)

    def player2 (self):
        sprite_sheet6 = SpriteSheet("spriteStand.png")
        image = sprite_sheet6.get_image(34, 19, 32, 73)
        self.walking_frames_r.append(image)
        sprite_sheet7 = SpriteSheet("spriteWalkL2.png")
        image = sprite_sheet7.get_image(34, 19, 32, 73)
        self.walking_frames_r.append(image)
        sprite_sheet8 = SpriteSheet("spriteWalkL1.png")
        image = sprite_sheet8.get_image(34, 19, 32, 73)
        self.walking_frames_r.append(image)
        sprite_sheet9 = SpriteSheet("spriteWalkR2.png")
        image = sprite_sheet9.get_image(34, 19, 32, 73)
        self.walking_frames_r.append(image)
        sprite_sheet10 = SpriteSheet("spriteWalkR1.png")
        image = sprite_sheet10.get_image(34, 19, 32, 73)
        self.walking_frames_r.append(image)

在另一个文件中,我们尝试调用这些精灵:

class Level_02(Level):

    def __init__(self, player):
         Level.__init__(self, player2)

class Level_03(Level):

    def __init__(self, player):
        Level.__init__(self, player1)

代码不起作用。我们如何为播放器精灵显示不同的图像,具体取决于它所处的级别?

编辑:更多代码(Level类的__init__方法)

def __init__(self, player):

    self.platform_list = pygame.sprite.Group()
    self.enemy_list = pygame.sprite.Group()
    self.player = player

1 个答案:

答案 0 :(得分:0)

player1 player2 是初始化player 对象属性的方法。您需要调用这些方法:

class Level_02(Level):
    def __init__(self, player):
         player.player2()
         Level.__init__(self, player)
class Level_03(Level):
    def __init__(self, player):
        player.player1()
        Level.__init__(self, player)