You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Web-Dev-For-Beginners/translations/ja/6-space-game/1-introduction/assignment.md

6.0 KiB

ゲームのモックアップ: デザインパターンの適用

課題概要

デザインパターンの知識を活かして、シンプルなゲームプロトタイプを作成しましょうこの課題では、アーキテクチャパターン継承またはコンポジションと、レッスンで学んだpub/sub通信システムを練習することが目的です。

指示

このレッスンで学んだデザインパターンを示すシンプルなゲームを作成してください。ゲームは機能的であれば十分で、複雑なグラフィックは必要ありません。基盤となるアーキテクチャと通信パターンに焦点を当ててください。

要件

アーキテクチャパターンを選択する:

  • オプションA: クラスベースの継承を使用する(例: GameObjectMovableHero
  • オプションB: コンポジションを使用する(例: 工場関数アプローチで混合動作を使用)

通信を実装する:

  • EventEmitterクラスを含め、pub/subメッセージングを実現する
  • 少なくとも23種類のメッセージタイプを設定する(例: PLAYER_MOVE, ENEMY_SPAWN, SCORE_UPDATE
  • ユーザー入力(キーボード/マウス)をイベントシステムを通じてゲームイベントに接続する

ゲーム要素を含める:

  • プレイヤーが操作するキャラクターを少なくとも1つ含める
  • 他のゲームオブジェクト敵、収集アイテム、環境要素などを少なくとも1つ含める
  • オブジェクト間の基本的な相互作用(衝突、収集、通信など)を実装する

ゲームアイデアの提案

検討すべきシンプルなゲーム:

  • スネークゲーム \u2013 ヘッドを追従するセグメント、ランダムにスポーンする食べ物
  • ポンのバリエーション \u2013 入力に応じて動くパドル、壁で跳ね返るボール
  • 収集ゲーム \u2013 プレイヤーがアイテムを収集しながら障害物を避ける
  • タワーディフェンスの基本 \u2013 タワーが移動する敵を検知して攻撃する

コード構造のガイドライン

// Example starting structure
const Messages = {
  // Define your game messages here
};

class EventEmitter {
  // Your event system implementation
}

// Choose either class-based OR composition approach
// Class-based example:
class GameObject { /* base properties */ }
class Player extends GameObject { /* player-specific behavior */ }

// OR Composition example:
const gameObject = { /* base properties */ };
const movable = { /* movement behavior */ };
function createPlayer() { /* combine behaviors */ }

実装のテスト

コードが動作することを確認する方法:

  • テスト: イベントがトリガーされたときにオブジェクトが移動または変化するか
  • 確認: 複数のオブジェクトが同じイベントに応答できるか
  • チェック: 既存のコードを変更せずに新しい動作を追加できるか
  • 確認: キーボード/マウス入力が適切にゲームイベントをトリガーするか

提出ガイドライン

提出物に含めるべきもの:

  1. JavaScriptファイル: ゲームの実装
  2. HTMLファイル: ゲームを実行・テストするためのもの(シンプルで構いません)
  3. コメント: 選択したパターンとその理由の説明
  4. 簡単なドキュメント: メッセージタイプとその機能の説明

採点基準

基準 優秀 (3点) 適切 (2点) 改善が必要 (1点)
アーキテクチャパターン 継承またはコンポジションを正しく実装し、明確なクラス/オブジェクト階層を持つ 選択したパターンを使用しているが、軽微な問題や一貫性の欠如がある パターンを使用しようとしているが、実装に重大な問題がある
Pub/Subの実装 EventEmitterが複数のメッセージタイプと適切なイベントフローで正しく動作する 基本的なpub/subシステムが動作し、いくつかのイベント処理がある イベントシステムは存在するが、信頼性に欠ける
ゲームの機能性 3つ以上のインタラクティブな要素がイベントを通じて通信する 2つのインタラクティブな要素が基本的なイベント通信を行う 1つの要素がイベントに応答するか、基本的な相互作用がある
コードの品質 クリーンでコメントが充実し、論理的に整理されたモダンなJavaScript 一般的に整理されたコードで、コメントが適度にある コードは動作するが、整理や明確なコメントが不足している

ボーナスポイント:

  • 創造的なゲームメカニクス: パターンの興味深い使用例を示す
  • 複数の入力方法: キーボードとマウスイベントの両方を使用
  • 拡張可能なアーキテクチャ: 新しい機能を簡単に追加できる構造

免責事項:
この文書はAI翻訳サービスCo-op Translatorを使用して翻訳されています。正確性を追求していますが、自動翻訳には誤りや不正確さが含まれる可能性があります。元の言語で記載された文書が正式な情報源とみなされるべきです。重要な情報については、専門の人間による翻訳を推奨します。この翻訳の使用に起因する誤解や誤解について、当社は責任を負いません。