2017-04-07 15 views
1

だから、私は自分のゲーム(プレイヤー、ボス、レベルゴール...)の中に特定のものがあります。したがって、オブジェクトにインスタンス化する必要があるクラスとして最初に存在するのではなく、手動で宣言されたスプライトにすることで、コードを単純化したいと考えています。Pygame 1.9.3:グループにスプライト(クラスなし)を追加する

(多くのそれはとにかくクラスにグループすべてに最適ですが、私はそれに同意するかどうかと言うでしょう - 。確かに念のため、この回避する方法を知っておくと便利なit'd)

私は希望ヒット検知の目的(画面に描画される)のために、グループ内でスプライトを持つのが好きです。しかし、私はこれに問題があります。私は、これが分離された "クラスレス"スプライトを作成し、それをリストに追加するのは非常に簡単だと思いました。

bloobList = pygame.sprite.Group() 

blooby = pygame.sprite.Sprite 

blooby.image = pygame.Surface([200,200]) 
blooby.image.fill([0,0,0]) 
blooby.rect = blooby.image.get_rect() 

bloobList.add(blooby) 

ただし、これを実行すると、起動時にアプリケーションがクラッシュします。私のIDEは、pygameのライブラリからsprite.pyを開き378行目に私を取り、私に語った:

builtins.TypeError: add_internal() missing 1 required positional argument: 'group' 

私は、これは意味して何の答えを見つけていないものを探して周りGoogleで検索しました。

moochList = pygame.sprite.Group() 

class Mooch(pygame.sprite.Sprite): 
    def __init__(self): 
     pygame.sprite.Sprite.__init__(self) 
     self.image = pygame.Surface([200,200]) 
     self.image.fill([0,0,0]) 
     self.rect = self.image.get_rect() 

stootch = Mooch() 

moochList.add(stootch) 

そして、この1はいつものように完璧に働いた:自分自身を確認するには、私は全く同じプログラムでシナリオを追加したクラス+オブジェクト+グループを書きました。私はPygame.orgのドキュメントをチェックしましたが、グループに追加するためにスプライトがクラスから生成されたオブジェクトでなければならないとは特に言いませんでしたが、特に「クラスレス」スプライトも許可されているとは言えませんでした。

私はPygameの心にはまったく新しいものなので、私はここで非常に明白な何かを見逃していたことに気付くでしょう。しかし、クラスレススプライトをグループに入れるべきだと私は思っています。group.add function は、指定された特定のスプライトとそのグループ自体に関係します。スプライトが属するクラスについては言及していません。

答えて

0

インスタンスではなくグループにpygame.sprite.Spriteクラスを追加しようとすると、エラーが発生します。括弧を追加すると、インスタンス/オブジェクトを作成するには正しく動作するはずです:

blooby = pygame.sprite.Sprite() 
関連する問題