Pythonでクラスのオブジェクトを作成に関する問題

ヴィンセントW.:

私は、スペースバーを押したときに剣を表示させると、私はキー5を打ったときに消えしようとしています。

if event.type == pg.KEYUP:
                if event.key == pg.K_ESCAPE:
                    self.quit()
                if event.key == pg.K_SPACE:
                    self.sword = Sword(self, self.player.rect.centerx-7, self.player.rect.bottom, self.player)
                if event.key == pg.K_5:
                    self.sword.kill()

私は最初の剣がどんな問題なく表示されたり消えたりすることができますが、私はもう一度スペースキーを押ししようとすると、私はこのエラーメッセージが表示されます:

File "/Users/(User)/Desktop/ZeldaGame/sprites.py", line 183, in __init__
    self.image.set_colorkey(WHITE)
AttributeError: 'Sword' object has no attribute 'set_colorkey'

ここに私の剣クラスは次のとおりです。

class Sword(pg.sprite.Sprite):
    def __init__(self, game, x, y, entity):
        self.groups = game.all_sprites
        pg.sprite.Sprite.__init__(self, self.groups)
        self.game = game
        self.image = self.game.sword
        self.image.set_colorkey(WHITE)
        self.rect = self.image.get_rect()
        self.x = x
        self.y = y
        self.rect.x = x 
        self.rect.y = y 
        if entity.direction == 'down':
            self.image = pg.transform.rotate(self.image, -90)

        def update(self):
            kill()

誰の助けが私には、表示され消えて、何度も繰り返し現れるとする剣ができるようにするだろうか?

user10987432:

警告:私はpygameのダウンロードについては何も知りません。

あるかのように思えるgame.sword最初は非常に最初の剣が作成される前に、あるpygame.Surfaceあなたは、コードの一部を示さなかったので、これは単なる推測です-オブジェクト。set_colorkeyように思わpygame.Surface方法、そしてあなたが呼び出すことができるという事実によってSword.__init__、エラーなしで初めてのことを私に告げるgame.sword最初になければなりませんpygame.Surfaceそれ以外の場合は、オブジェクトself.image.set_colorkey(WHITE)エラーが発生します)。

次に、あなたがスペースバーを押して二回目は、game.swordに参照のうえされSword、あなたが実行するので、オブジェクトself.sword = Sword(...あなたは、スペースバーを押す初めて。あなたは二刀のを入力して__init__、今game.swordを指しSword、ではありませんpygame.SurfaceSwordsがありませんset_colorkey(私は推測しているが故に方法、エラーをpygame.Sprite継承しませんpygame.Surface)。

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=29124&siteId=1