mcpField
P
pygame-patterns

pygame-patterns

github.com/ikatechis開発0135 回インストール45 週間前に更新
リポジトリ

pygame-patterns について

pygame-patternsは、Pygameのエンティティやシステムを実装する開発者向けのスキルです。移動、弾、スプライト読み込み、衝突処理について、プロジェクト内で検証済みのパターンを提供します。

主な機能

  1. 01フレームレートに依存しない移動
  2. 02弾と衝突のパターン
  3. 03フォールバック付きスプライト読み込み
  4. 04一元管理された設定
  5. 05Pygameの角度規約

活用シーン

  1. 01弾エンティティの実装
  2. 02滑らかなプレイヤー移動と回転の追加
  3. 03エラー処理を含むスプライト読み込み

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/ikatechis/claude-agentic-mastery --skill pygame-patterns

インストール後、Claude Code で/pygame-patternsを入力して読み込まれたか確認します。

同梱ファイルpatterns/projectiles.md

詳細

Pygame パターンのスキル

このプロジェクトでテストおよび検証済みの pygame パターンを提供します。一貫性と正確性を確保するため、新しいエンティティやシステムを実装する際に使用してください。

基本原則

  1. フレームレートに依存しない移動:フレームレートにかかわらず速度を一定にするため、すべての移動に delta_time を使用します
  2. 検証済みのパターンのみ:すべてのパターンは、このプロジェクトの動作するコードに基づいています
  3. 設定駆動:一元管理された config.py のデータクラスを使用し、値をハードコードしないでください
  4. 角度の規則: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:パターンを適用する

パターンの構成に従ってください:

  1. src/config.py に設定用データクラスを追加する(値をハードコードしない)
  2. 必要な pygame モジュールをインポートする
  3. フレームレートに依存しない計算に delta_time を使用する
  4. エンティティのライフサイクルイベントをログに記録する
  5. 角度の規則に従う(0° = 右、pygame の Y 軸は反転)

パターン検証チェックリスト

パターンを使う前に:

  • パターンのドキュメントを読む
  • 新しい関数を使う場合は、ref.tools で pygame API を検証する
  • 設定値が config.py にあることを確認する
  • 座標系を理解する(pygame の Y 軸は反転)
  • フレームレートに依存しないことをテストする(どの FPS でも動作すること)

使用例

弾丸エンティティを実装する場合:

  1. パターンを読む:

    Read .claude/skills/pygame-patterns/patterns/projectiles.md
    
  2. 構成に従う:

    • config.py に ProjectileConfig を作成する
    • エンティティの位置に角度を指定して生成する
    • 角度 → 速度に変換する(cos/sin、Y は負)
    • delta_time を使って位置を更新する
    • 寿命と衝突を確認する
  3. 角度の計算を検証する:

    # 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 軸の反転を正しく処理する
  • 動作するコードに基づいて検証されている

コメント