9

そのため、プログラムの中で、プレイヤーが死なずに衝突できるいくつかのスプライトのグループを作成する必要があります(画面上にある他のスプライトのように)。

私はグーグルを精査しましたが、公式のpygameドキュメントは役に立たないか理解するのが難しいようです。私はこれについて少し知っている人からのほんの少しの助けを探しています。

まず、グループを作成する方法を見つける必要があります。ゲームの初期設定になりますか?

次に、作成時にスプライトをグループに追加します。pygameサイトには、この件について次のように書かれています。

Sprite.add(*groups)

それで...これをどのように使用しますか?gemという名前のスプライトがあるとしましょう。gemsグループにgemを追加する必要があります。それは...ですか:

gem = Sprite.add(gems)

私はそれを疑っていますが、サイトに出て行く例がなければ、私は途方に暮れています。

さらに、特定のグループの属性を編集できるようにしたいと思います。これは、クラスのようにグループを定義することによって行われますか?それとも、既存のスプライトの定義内で定義しているものですが、「グループ内のスプライトの場合」を使用していますか?

4

4 に答える 4

16

あなたの最初の質問に答えるために; グループを作成するには、次のようにします。

gems = pygame.sprite.Group()

次に、スプ​​ライトを追加します。

gems.add(gem)

編集するグループの属性については、それらが何であるかによって異なります。たとえば、次のように定義して、グループの方向を示すことができます。

gems.direction = 'up'
于 2012-12-13T00:35:04.607 に答える
7

私はこの質問がすでに答えられていることを知っていますが、最良の方法はkelwinfcが提案したもののようなものです。わかりやすくするために詳しく説明します。

# First, create you group
gems = pygame.sprite.Group()

class Jewel (pygame.sprite.Sprite): # Inherit from the Sprite
    def __init__ (self, *args): # Call the constructor with whatever arguments...
        # This next part is key. You call the super constructor, and pass in the 
        # group you've created and it is automatically added to the group every 
        # time you create an instance of this class
        pygame.sprite.Sprite.__init__(self, gems) 

        # rest of class stuff after this.

>>> ruby = Jewel()  
>>> diamond = Jewel()  
>>> coal = Jewel()

# All three are now in the group gems. 
>>> gems.sprites()
[<Jewel sprite(in 1 groups)>, <Jewel sprite(in 1 groups)>, <Jewel sprite(in 1 groups)>]

でさらに追加しgems.add(some_sprite) たり、同様にで削除したりすることもできますgems.remove(some_sprite)

于 2013-01-14T23:46:25.440 に答える
1

__init__グループのリストを使用してスーパー関数を呼び出すだけです。例えば:

def __init__(self):
    pygame.sprite.Sprite.__init__(self, self.groups)

次に、階層の各クラスで、属性self.groupsを定義する必要があります。スーパーコンストラクターは、各インスタンスをそのグループに追加する作業を行います。これは私の意見では最もクリーンなソリューションです。それ以外の場合は、すべてのクラスのグループのリストを使用してスーパーコンストラクターを明示的に呼び出します。

于 2012-12-13T14:34:20.400 に答える
0

より簡単ですが、スプライトをコンストラクターに直接渡すことができます。

gems = pygame.sprite.Group(gem1, gem2)
于 2015-10-22T14:48:06.890 に答える