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

Update an individual sprite in a game loop

我试图在包含两个精灵的游戏循环中只移动一个精灵。我在 Bit.update() 方法中包含了 spr1,所以如果 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. Bit中,去掉self=spr1那一行应该就OK了。在 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

(注意:我没有使用过带电电线,所以我可能遗漏了一些明显的东西:))