【问题标题】:Changing image of sprite when encountering new level遇到新关卡时更改精灵图像
【发布时间】:2016-08-19 15:41:10
【问题描述】:

我们正在尝试在 pygame 中制作一个包含多个关卡的游戏。对于特定关卡,我们希望显示不同的精灵/图像(例如,Level 1 -> girl char,Level 2 ->boat image,Level 3 -> girl char)。

我们在一个名为 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)

代码不起作用。我们如何根据玩家精灵所在的关卡为玩家精灵显示不同的图像?

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

def __init__(self, player):

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

【问题讨论】:

  • 你的 __init__ 方法在你的 Level 类中是什么样子的?

标签: python python-3.x pygame


【解决方案1】:

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)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多