属性を増やして機能を追加した、Spriteのサブクラス。DirtySprites用のGroupです。LayeredUpdatesのサブクラスです。Spriteオブジェクトを一つだけ格納できるGroupです。Groupが格納しているSpriteの中から、指定したSpriteと接触しているものを探します。rect属性を使って二つのspriteの当たり判定を行います。rectの大きさを指定した比率に変換したうえで、二つのspriteの当たり判定を調べます。円に変換した大きさを使って、二つのspriteの当たり判定を行います。radius属性の大きさを指定した比率に変換したうえで、二つのspriteの当たり判定を調べます。mask属性を使って二つのspriteの当たり判定を行います。Group間で、接触している全てのSpriteを探します。Group内にあるSpriteのどれかと接触しているかを調べます。Group内にあるSpriteのどれかと接触しているかを調べます。このモジュールにはゲームで使えるシンプルなクラスがいくつか含まれています。メインとなるSpriteクラスと、Spriteクラスを含んだ様々なGroupクラスがあります。Pygameのゲーム開発でこれらのクラスを使うかどうかは、あなたの自由です。これらのクラスは非常にコンパクトな作りとなっており、基本的な機能しか持っていませんが、大抵のゲームに流用できるようなプログラムコードとなっています。ゲーム開発では、Spriteクラスは他のクラスの基底クラスとして使われるのを目的として作られています。spriteを格納するためのGroupという基底クラスも用意されてます。ゲーム開発では、Spriteクラスを内部に持って特別にカスタマイズした、様々な種類のGroupクラスを作ることができます。この基底Spriteクラスは、内部に格納した情報をSurfaceへ描写する機能を持っています。Surface.rect属性が設定されている必要があります。命令にも上記属性が設定されている必要があり、この命令を使うと背景を上書きして全てのSpriteの画像をクリアすることができます。pygame.sprite.OrderedUpdatesクラスもあります。最後に、このモジュールには様々は当たり判定機能があります。この機能を使うと、複数のgroupに格納されている各spriteが衝突していないか、rect範囲を基にして調べることができます。当たり判定を行うためには、SpriteオブジェクトにSurface.rect属性を設定しておく必要があります。Groupクラスは、内部に保持するSpriteオブジェクトを削除したり追加したりして、より高度な処理を行えるように設計されています。Groupクラスを使うことで、対象のSpriteオブジェクトが既に内部に存在しているかどうかを簡単に調べることができます。Spriteオブジェクトは、複数のGroupクラスに追加することができます。ゲーム開発では、これらのGroupオブジェクトを使って対象物の描写処理を行ったり、プレイヤーの操作とそれによって生じる内部処理をgroupごとに分けたりできます。Spriteクラスを継承する場合は新しい属性を定義せずに、同じgroupに所属する他のSpriteと同じ構造にするようにしてください。することで、ゲーム中でのsprite走査処理が簡単になります。add()命令やremove()命令を使って、GroupクラスにSpriteクラスを追加したり削除したりできます。これらの命令では一つもしくは複数のクラスをまとめて処理することができます。処理できる数はクラスの構造によります。これらのクラスで既定のコンストラクタを実行する際にも一つもしくは複数のクラスを引数として設定することもできます。設定できる数はコンストラクタの構造によります。Groupクラスに対して、同じSpriteクラスを繰り返し追加・削除しても特に問題はありません。SpriteクラスやGroupクラスを継承せず新規にクラスを作成することも可能ですが、作ったクラスをSpriteやGroupに追加するのであれば、既存のクラスを継承することを強く勧めます。Spriteクラスにはスレッドセーフ機能はありません。そのため、マルチスレッド環境で使う場合はSpriteクラスのロックを必ず行ってください。spriteクラスで行う処理を制御する命令です。GroupにSpriteを追加します。GroupからSpriteを削除します。全てのGroupからSpriteを削除します。spriteが1つ以上のgroupに属しているか調べます。特定の画像をゲーム画面に表示するためのシンプルな基底クラスです。Sprite.image属性とSprite.rect属性を設定してください。コンストラクタ実行時には望む数のGroupインスタンスを引数として設定することができ、所属Groupとして追加されます。このSpriteクラスを継承して使う場合は、Groupへ追加する前に必ず基底Spriteクラスの初期化処理を実行するようにしてください。Sprite.updatespriteクラスで行う処理を制御する命令です。Sprite.update(*args):この命令は本来は何の処理も行いません。;自分で好きなように処理を定義できる、便利な"フック"なのです。引数に何を設定したかに関わらず、この命令はGroup.update命令実行時に自動的に呼び出されます。所属するGroupでupdate()命令を使わないのであれば、この命令を使う必要はありません。Sprite.addGroupにSpriteを追加します。None任意の数のGroupオブジェクトを引数として設定することができます。SpriteオブジェクトがそのGroupにまだ属していない場合に、SpriteオブジェクトはそのGroupに追加されます。Sprite.removeGroupからSpriteを削除します。None任意の数のGroupオブジェクトを引数として設定することができます。SpriteオブジェクトがそのGroupに属している場合に、SpriteオブジェクトはそのGroupから削除されます。Sprite.kill全てのGroupからSpriteを削除します。None所属する全てのGroupからSpriteを削除します。所属情報以外のSpriteの情報については、一切変更されません。この命令を実行した後もSpriteオブジェクトは使い続けることはできますし、再度Groupに所属させることもできます。Sprite.alivespriteが1つ以上のgroupに属しているか調べます。boolSpriteが1つ以上のgroupに属している場合はTrueが戻り値として返ります。group_listこのSpriteが所属している全てのGroup一覧を戻り値として返します。pygame.sprite.DirtySprite属性を増やして機能を追加した、Spriteのサブクラス。DirtySpriteDirtySpriteオブジェクトに追加された属性には、既定値が設定されています。1が設定されている場合は、画面描写後に再び0が設定されます。2が設定されている場合は、描写画像の更新が必要です。0が設定されている場合は、描写画像画像の更新が必要ないという意味なので、画面描写は行われません。覚えておいてください。通常は1が設定されており、0を設定した場合は画面に描写されません。(参照のみに使う値です。このSpriteクラスがLayeredRenderGroupに追加された場合に使われます。GroupからSpriteを削除します。指定したSpriteがGroupに格納されているか調べます。格納している各Spriteオブジェクトのupdate命令を実行します。Spriteの画像に背景を上書きします。全てのSpriteを削除しますSpriteオブジェクトを格納するためのシンプルなクラスです。このクラスを継承して、格納するSpriteオブジェクトに対して具体的な処理を行うクラスを作成することができます。Groupに追加できます。Groupクラスでは、下記のPython標準操作をサポートしています。指定したSpriteオブジェクトを格納しているか調べます。Spriteオブジェクトを1つ以上格納しているか調べます。格納されている全てのSpriteオブジェクトを逐次参照します。Groupクラスに格納されたSpriteオブジェクトは順番どおりに並んでいません。そのため、Spriteオブジェクトを画面描写したり逐次参照したりする順番は特に決まっていません。sprite_listこのgroupが格納している全てのSpriteオブジェクトの一覧を戻り値として返します。iter命令を使った逐次参照を行うこともできますが、groupの編集を行っている間は逐次参照はできません。GroupこのGroupが持つSpriteオブジェクトと、全て同じものを持つGroupオブジェクトを新規に作成します。NoneこのGroupに任意の数のSpriteオブジェクトを追加します。Groupに格納されていないSpriteのみを追加できます。引数には、Spriteオブジェクトのインテレーターを設定することもできます。Group.removeGroupからSpriteを削除します。NoneこのGroupから任意の数のSpriteを削除します。Groupに格納されているSpriteのみを削除できます。引数には、Spriteオブジェクトのインテレーターを設定することもできます。Group.has指定したSpriteがGroupに格納されているか調べます。None引数に設定したspriteをGroupが全て格納していた場合、Trueが戻り値として返ります。これを使うと、"in"演算子を使ってGroupに格納されたSpriteを一つ一つ調べる時と同じ処理を行えます。引数には、Spriteオブジェクトのインテレーターを設定することもできます。Group.update格納している各Spriteオブジェクトのupdate命令を実行します。Groupが格納している全てのSpriteのupdate()命令を実行します。基底Spriteクラスのupdate()命令には引数を設定できますが、特に何か処理をすることはありません。Group.updateに設定した引数は、格納するSpriteのupdate命令へそのまま渡されます。Sprite.update命令から戻り値を取得する、といった使い方はできません。Sprite.image属性が描写する画像として使われ、Sprite.rect属性が画像の描写位置として使われます。spriteを順番通りに管理しているわけではないので、描写はランダムな順番で行われます。Group.clearSpriteの画像に背景を上書きします。None直近のGroup.draw命令で描写されたSpriteの画像を消去します。ここで言う背景画像とは、普通は描写先Surfaceの該当位置に表示されている画像のことを指します。引数を二つ持つコールバック関数を独自に作成することもできます。;二つの引数とは、描写先Surfaceとその上書き範囲のことです。コールバック関数は画像クリアの度に複数回実行されます。下記がSpriteの画像を赤一色で塗りつぶすコールバック関数の例です。NoneこのGroupから全てのSpriteを削除します。Spriteの画像のコピー描写を行い、描写先となった範囲の情報を取得します。これはpygame.sprite.Groupの派生クラスです。draw()命令が拡張されており、画面上の描写先となった範囲の情報を取得できます。RenderUpdates.drawSpriteの画像のコピー描写を行い、描写先となった範囲の情報を取得します。Rect_list格納している全てのSpriteの画像を指定surface上に描写します。Group.drawと同じ動きですが、この命令では画面上で描写が行われた範囲の一覧を戻り値として返します。Group.clear命令でクリアした範囲も描写先範囲に含まれるので、戻り値として取得されます。値はpygame.display.update命令実行時に引数として設定するとよいでしょう。することで、ソフトウェア駆動モードでのパフォーマンスが向上します。した画面更新の速度を向上させる手法は、描写先の背景が静止画の場合にのみ有効です。OrderedUpdatesこれはpygame.sprite.RenderUpdatesの派生クラスです。追加された順番に従ってSpriteの画面描写を行います。通常のGroupに比べて、Spriteの追加や削除処理がやや遅くなります。一つ、もしくは複数のspriteをgroupに追加します。spriteの一覧を戻り値として返します。(一覧の並び順は、最後列にあるspriteから始まり、最前列にあるspriteが最後になります)。引数に指定したsurfaceへ、格納する全てのspriteを順番に描写します。指定した位置にある全てのspriteの一覧を戻り値として返します。格納されたspriteの中から、idx引数に指定した配列位置にあるspriteを戻り値として返します。レイヤーから全てのspriteを削除し、その削除した一覧を戻り値として返します。設定されているレイヤーの一覧を戻り値として取得します(unique)。並び順は、最後列から最前列の順番になります。spriteのレイヤーを変更します。spriteが載っているレイヤーを戻り値として返します。最前列のレイヤーを戻り値として返します。最後列のレイヤーを戻り値として返します。指定したspriteを最前列のレイヤーに移動させます。指定したspriteを最後列のレイヤーに移動させます。最前列のspriteを戻り値として返します。レイヤーから全てのspriteを戻り値として返します。追加された順番がspriteの並び順となります。spritesを移動させます。pygame.sprite.Spriteオブジェクトの追加・削除をすることができます。'default_layer'とレイヤー値を設定することで、既定となるレイヤー値を設定することができます。既定となるレイヤー値は0が設定されています。レイヤー属性が設定されていた場合は、そのレイヤー属性が使用されます。属性に上書きされます)。Spriteにlayer属性が設定されておらず、**kwarg引数も設定されなかった場合は、既定のレイヤーが設定されます。このクラスはpygameバージョン1.8.0で新たに実装されました。※sprite.layerは誤りのためsprite._layerに変更して訳しています。LayeredUpdates.add一つ、もしくは複数のspriteをgroupに追加します。レイヤー属性が設定されていた場合は、そのレイヤー属性が使用されます。属性に上書きされます)。**kwarg引数が設定されなかった場合は、既定のレイヤーが設定されます。※sprite.layerは誤りのためsprite._layerに変更して訳しています。LayeredUpdates.spritesspriteの一覧を戻り値として返します。(一覧の並び順は、最後列にあるspriteから始まり、最前列にあるspriteが最後になります)。spritesLayeredUpdates.draw引数に指定したsurfaceへ、格納する全てのspriteを順番に描写します。Rect_listLayeredUpdates.get_sprites_at指定した位置にある全てのspriteの一覧を戻り値として返します。colliding_sprites最後列にあるspriteは一覧の最初に取得され、最前列にあるspriteは一覧の最後に取得されます。LayeredUpdates.get_sprite格納されたspriteの中から、idx引数に指定した配列位置にあるspriteを戻り値として返します。spriteidx引数に指定した値が格納しているsprite数の配列範囲外だった場合は、IndexOutOfBoundsエラーが発生します。LayeredUpdates.remove_sprites_of_layerレイヤーから全てのspriteを削除し、その削除した一覧を戻り値として返します。spritesLayeredUpdates.layers設定されているレイヤーの一覧を戻り値として取得します(unique)。並び順は、最後列から最前列の順番になります。layersLayeredUpdates.change_layerspriteのレイヤーを変更します。Noneこの命令を実行するためには、引数に指定するspriteがこのクラスに格納されていなければなりません。プログラム内部では、格納されているかのチェックは行われません。LayeredUpdates.get_layer_of_spritespriteが載っているレイヤーを戻り値として返します。layer指定したspriteが見つからなかった場合は、既定のレイヤーが戻り値として返ります。LayeredUpdates.get_top_layer最前列のレイヤーを戻り値として返します。layerLayeredUpdates.get_bottom_layer最後列のレイヤーを戻り値として返します。layerLayeredUpdates.move_to_front指定したspriteを最前列のレイヤーに移動させます。LayeredUpdates.move_to_back指定したspriteを最後列のレイヤーに移動させます。LayeredUpdates.get_top_sprite最前列のspriteを戻り値として返します。SpriteLayeredUpdates.get_sprites_from_layerレイヤーから全てのspriteを戻り値として返します。追加された順番がspriteの並び順となります。spritesレイヤーから全てのspriteを戻り値として返します。追加された順番がspriteの並び順となります。この命令では線形探索が使われ、取得したspriteがレイヤーから削除されることもありません。spritesを移動させます。Noneこの関数では、引数に指定したlayerの整合性チェックまでは行わないので、必ず定義済みのlayerを指定してください。pygame.sprite.LayeredDirtyDirtySprites用のGroupです。LayeredUpdatesのサブクラスです。引数に指定したsurfaceへ、格納する全てのspriteを順番に描写します。画面の塗りつぶしに使うbackground情報を設定します。指定した範囲の再描写を行います。描写可能領域を設定します。None値を引数に設定すると、描写可能領域の設定が解除されます。描写可能領域を取得します。spriteのレイヤーを変更します。閾値をミリ秒単位で設定します。格納することができます。(詳しくはDirtySpriteの項目を参照してください)。この関数はdirtyフラグを使っているので、spriteクラスを常時大量に使う場合にはpygame.sprite.RenderUpdates関数よりも処理が速くなります。dirtyフラグを使った部分更新と通常の画面全体更新を必要に応じて切り替えるので、処理速度を気にする必要はありません。このクラスはpygame.sprite.Groupクラスとほぼ同じ機能を持ちます。TrueかFalseを設定します。Falseが設定されています。_time_threshold:部分更新モードと全体更新モードの切り替えにかかる限界時間です。設定されており、1000./(フレームレート)となります。この命令はpygameのバージョン1.8.0で新たに実装されました。LayeredDirty.draw引数に指定したsurfaceへ、格納する全てのspriteを順番に描写します。Rect_listこの命令ではbackgroundの情報も設定することができます。background情報が既に設定されている場合は、bgd引数で設定した値は無視されます。LayeredDirty.clear画面の塗りつぶしに使うbackground情報を設定します。NoneLayeredDirty.repaint_rect指定した範囲の再描写を行います。Nonescreen_rect引数で、再描写する画面の座標を設定します。LayeredDirty.set_clip描写可能領域を設定します。None値を引数に設定すると、描写可能領域の設定が解除されます。NoneLayeredDirty.get_clip描写可能領域を取得します。RectLayeredDirty.change_layerspriteのレイヤーを変更します。Noneこの命令を実行するためには、引数に指定するspriteがこのクラスに格納されていなければなりません。プログラム内部では、格納されているかのチェックは行われません。LayeredDirty.set_timing_treshold閾値をミリ秒単位で設定します。None既定では1000./80が設定されています。全体描写モードへの切り替えにかかるフレームレートです。pygame.sprite.GroupSingleSpriteオブジェクトを一つだけ格納できるGroupです。GroupSingleこのクラスではSpriteオブジェクトを一つだけ格納できます。Spriteを新たに追加するたびに、格納されているSpriteは削除されます。このGroupは、GroupSingle.spriteという内部に格納したSpriteを制御するための特殊なプロパティを持っています。空のGroupを作成する場合は引数にNoneを指定します。引数にSpriteを設定して、GroupSingleにSpriteを格納することもできます。pygame.sprite.spritecollideGroupが格納しているSpriteの中から、指定したSpriteと接触しているものを探します。Sprite_listGroupが格納している全てのSpriteの中から、指定したSpriteと接触しているものの一覧を戻り値として返します。各SpriteのSprite.rect属性同士を比較して、接触しているどうかの判別を行います。dokill引数にはbool型の値を設定します。Trueを設定した場合は、取得したSpriteの一覧はGroupから削除されます。引き数には、二つのspriteが接触しているかどうかを調べるコールバック関数を設定します。このコールバック関数は、spritesを二つ引数として設定でき、それらが接触しているどうかを示すbool型の戻り値を返すようにしてください。collided引数を設定しない場合は、sprite全てにその範囲を表すrect属性を設定するようにしてください。この関数では、spriteの持つrect属性を使って当たり判定を調べます。collide_maskpygame.sprite.collide_rectrect属性を使って二つのspriteの当たり判定を行います。bool二つのspriteが接触しているかどうかを調べます。pygameのRect.colliderectを使って当たり判定の計算を行います。この関数は、spritecollideで当たり判定を調べるためのコールバック関数として使うことを目的に作られています。属性が設されていなければなりません。新たに実装されました。pygame.sprite.collide_rect_ratiorectの大きさを指定した比率に変換したうえで、二つのspriteの当たり判定を調べます。collided_callablerect属性の大きさを変換したうえで、二つのspriteの当たり判定を調べるためのコーラブルクラスです。この関数の戻り値は、spritecollideで当たり判定を調べるためのコールバック関数として使うことを目的としています。ratio引数には浮動少数値を設定します。2.0ならば大きさは2倍、0.5ならば大きさは半分となります。新たに実装されました。pygame.sprite.collide_circle円に変換した大きさを使って、二つのspriteの当たり判定を行います。bool各spriteの中心を起点として円を作り、その円同士が重なるかを調べることによって当たり判定を行います。spritesが"radius"属性を持っていればそれを元にして円が作られます。それがない場合は、"rect"属性のサイズを完全に囲むことができる大きさの円が作成されます。この関数は、spritecollideで当たり判定を調べるためのコールバック関数として使うことを目的に作られています。属性と、可能であれば"radius"属性が設定されていなければなりません。新たに実装されました。pygame.sprite.collide_circle_ratioradius属性の大きさを指定した比率に変換したうえで、二つのspriteの当たり判定を調べます。collided_callableradius属性の大きさを指定した比率に変換したうえで、二つのspriteの当たり判定を調べるためのコーラブルクラスです。この関数の戻り値は、spritecollideで当たり判定を調べるためのコールバック関数として使うことを目的としています。radius引数には浮動少数値を設定します。2.0ならば大きさは2倍、0.5ならば大きさは半分となります。このコーラブルクラスでは、ratio引数に指定した比率で円の半径サイズを変更し、spriteを中心として円が重なっているかどうかを調べることによって当たり判定を調べます。spritesが"radius"属性を持っていればそれを元にして円が作られます。それがない場合は、"rect"属性のサイズを完全に囲むことができる大きさの円が作成されます。この関数の戻り値は、spritecollideで当たり判定を調べるためのコールバック関数として使うことを目的としています。属性と"radius"属性が設定されていなければなりません。新たに実装されました。pygame.sprite.collide_maskmask属性を使って二つのspriteの当たり判定を行います。boolbitmaskが重なっているかどうかを調べることによって、二つのspriteの当たり判定を行います。属性を持っていた場合はそれがマスクとして使われ、持っていない場合はspriteの画像を基にしてマスクが作成されます。この関数は、spritecollideで当たり判定を調べるためのコールバック関数として使うことを目的に作られています。属性と"mask"属性が定義されていなければなりません。新たに実装されました。Group間で、接触している全てのSpriteを探します。Sprite_dictこの関数では、二つのGroup内のSpriteが接触しているかどうかを調べます。各SpriteのSprite.rect属性同士を比較して、接触しているかどうかの判別を行います。Group1内のSpriteが戻り値として取得されます。取得された各Spriteには、それと接触しているgroup2内のSpriteの一覧が格納されています。設定された場合は、該当するGroupからは取得したSpritesの一覧が削除されます。引数にTrueを設定すると重複カウントがされなくなります。Group1内の一つのSpriteに接触していると判定されれば、他のSpriteに接触していてもそこではカウントされません。Spriteの削除は最後にまとめて行われるのではなく、接触判定時に合わせて行われているようです。Group内にあるSpriteのどれかと接触しているかを調べます。Group内にあるSpriteのどれかと接触しているかどうかを調べます。各SpriteのSprite.rect属性同士を比較して、接触しているかどうかの判別を行います。命令よりも素早い当たり判定ができます。Group内にあるSpriteのどれかと接触しているかを調べます。Group内にあるSpriteのどれかと接触しているかどうかを調べます。各SpriteのSprite.rect属性同士を比較して、接触しているかどうかの判別を行います。命令よりも素早い当たり判定ができます。本サイトはpygameのサイトを翻訳したものであり、pygameに関する著作権は全てそちらに帰属しています。本サイトは現在翻訳中のため、未翻訳の項目が存在します。誤訳が判明した場合、より分かりやすい言い回しが見つかった場合、原文が変更された場合などにより、本サイトの内容は予告なく変更されることがあります。翻訳の内容には誤りがある可能性があります。本サイトの記述内容によって不利益が発生した場合も、サイト管理人は一切の責任を負いません。