1

我试图在包括两个精灵的游戏循环中只移动一个精灵。我已经包含spr1Bit.update()方法中,所以如果w被按下spr1.y -= 60。换句话说,精灵被分配到self希望只有在被按下spr1时才会被移动。w但是,在当前代码中,按下w同时移动spr1spr2。怎么才能只spr1在update方法中引用和更新呢?

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()
4

1 回答 1

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它。

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

于 2016-05-10T12:53:14.347 回答