pygame-patterns について
pygame-patternsは、Pygameのエンティティやシステムを実装する開発者向けのスキルです。移動、弾、スプライト読み込み、衝突処理について、プロジェクト内で検証済みのパターンを提供します。
主な機能
- 01フレームレートに依存しない移動
- 02弾と衝突のパターン
- 03フォールバック付きスプライト読み込み
- 04一元管理された設定
- 05Pygameの角度規約
活用シーン
- 01弾エンティティの実装
- 02滑らかなプレイヤー移動と回転の追加
- 03エラー処理を含むスプライト読み込み
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ ikatechis/ claude-agentic-mastery --skill pygame-patternsインストール後、Claude Code で/pygame-patternsを入力して読み込まれたか確認します。
同梱ファイルpatterns/projectiles.md
詳細
Pygame パターンのスキル
このプロジェクトでテストおよび検証済みの pygame パターンを提供します。一貫性と正確性を確保するため、新しいエンティティやシステムを実装する際に使用してください。
基本原則
- フレームレートに依存しない移動:フレームレートにかかわらず速度を一定にするため、すべての移動に delta_time を使用します
- 検証済みのパターンのみ:すべてのパターンは、このプロジェクトの動作するコードに基づいています
- 設定駆動:一元管理された config.py のデータクラスを使用し、値をハードコードしないでください
- 角度の規則:0° = 右、90° = 上、180° = 左、270° = 下(pygame の Y 軸は反転しています)
利用可能なパターン
弾丸
patterns/projectiles.md を参照してください:
- エンティティの位置と方向を指定した弾丸の生成
- フレームレートに依存しない弾丸の移動(速度ベクトル)
- 円形の衝突判定
- 寿命の管理と画面外への破棄
- pygame の Y 軸を考慮した、角度から速度ベクトルへの変換
手順
ステップ 1:必要なパターンを特定する
実装に合ったパターンを判断してください:
- 弾丸システム:生成、移動、衝突 → projectiles.md を使用
- エンティティの移動:WASD、滑らかな回転 → player.py:129-155 を参照
- スプライトの読み込み:エラー処理、フォールバック → utils.py:10-27 を参照
- 衝突判定:円形判定 → game.py の衝突ロジックを参照
ステップ 2:パターンを参照する
パターンのドキュメントを読みます:
Read .claude/skills/pygame-patterns/patterns/<pattern>.md
または、既存の実装を確認します:
Read src/entities/<entity>.py
ステップ 3:ドキュメントで検証する
重要:実装前に、ref.tools を使って pygame API を検証してください:
- pygame のバージョンを pyproject.toml で確認する
- API を検証するため、ref_search_documentation を使用する
- 関数のシグネチャとパラメーターを確認する
ステップ 4:パターンを適用する
パターンの構成に従ってください:
- src/config.py に設定用データクラスを追加する(値をハードコードしない)
- 必要な pygame モジュールをインポートする
- フレームレートに依存しない計算に delta_time を使用する
- エンティティのライフサイクルイベントをログに記録する
- 角度の規則に従う(0° = 右、pygame の Y 軸は反転)
パターン検証チェックリスト
パターンを使う前に:
- パターンのドキュメントを読む
- 新しい関数を使う場合は、ref.tools で pygame API を検証する
- 設定値が config.py にあることを確認する
- 座標系を理解する(pygame の Y 軸は反転)
- フレームレートに依存しないことをテストする(どの FPS でも動作すること)
使用例
弾丸エンティティを実装する場合:
-
パターンを読む:
Read .claude/skills/pygame-patterns/patterns/projectiles.md -
構成に従う:
- config.py に ProjectileConfig を作成する
- エンティティの位置に角度を指定して生成する
- 角度 → 速度に変換する(cos/sin、Y は負)
- delta_time を使って位置を更新する
- 寿命と衝突を確認する
-
角度の計算を検証する:
# 0° = right, 90° = up (pygame Y is inverted) angle_rad = math.radians(angle) velocity_x = math.cos(angle_rad) * speed velocity_y = -math.sin(angle_rad) * speed # negative for pygame
他のスキルとの連携
- python-testing:エンティティの移動と衝突のテスト生成に使用する
- entity-builder:このスキルをエンティティ生成パターンに反映するために使用する
- game-artist:スプライトの読み込みと回転にパターンを使用する
現在のプロジェクトのパターン
実装済みコードから検証されたパターン:
- プレイヤーの回転:src/entities/player.py:129-155(滑らかな回転、角度の折り返し)
- スプライトの読み込み:src/utils.py:10-27(エラー処理、フォールバック)
- 衝突判定:円形判定(player-zombie および player-powerup で使用)
- フレームレートに依存しない移動:すべてのエンティティで delta_time * speed を使用
品質基準
すべてのパターンは、次の条件を満たす必要があります:
- フレームレートに依存しない(delta_time を使用する)
- 一元管理された設定を使用する(マジックナンバーを使わない)
- エンティティのイベントをログに記録する
- pygame の Y 軸の反転を正しく処理する
- 動作するコードに基づいて検証されている
コメント
Markdown 対応