在游戏循环中更新单个精灵

时间:2016-05-10 12:26:30

标签: python class oop livewires

我试图在包含两个精灵的游戏循环中只移动一个精灵。我在spr1方法中添加了Bit.update(),因此如果按下 w spr1.y -= 60。换句话说,精灵被分配给self,希望在按下 w 时只移动spr1。但是,在当前代码中,按 w 会移动spr1spr2。如何在更新方法中仅引用和更新spr1

class Bit(games.Sprite):
    def update(self):
        if games.keyboard.is_pressed(games.K_w):
            self = spr1
            self.y -= 60

def main():
    spr1_image = games.load_image("spr1.png")
    spr1 = Bit(image = spr1_image,
                x = games.screen.width / 10,
                y = games.screen.height / 10)

    spr2_image = games.load_image("spr2.png")
    spr2 = Bit(image = spr2_image,
                x = games.screen.width * 9 / 10,
                y = games.screen.height * 9 / 10)

    games.screen.add(spr1)
    games.screen.add(spr2)

    games.screen.mainloop()

main()

1 个答案:

答案 0 :(得分:0)

<强>被修改 这两个精灵有不同的行为,所以你需要不同的类。

  1. Bit中,取出self=spr1行,您应该没问题。在update()中,self是当前精灵的所有内容 - spr1spr2
  2. main中,将spr2更改为

    spr2 = games.Sprite(image = spr2_image,    # <---- changed class
            x = games.screen.width * 9 / 10,
            y = games.screen.height * 9 / 10)
    

    由于spr2不需要响应键盘,因此不需要games.Sprite尚未提供的任何行为。因此,您无需使用Bit

  3. (警告:我没有使用过livewires,所以我可能会遗漏一些明显的东西:))

相关问题