|
|
<!--
|
|
|
CO_OP_TRANSLATOR_METADATA:
|
|
|
{
|
|
|
"original_hash": "232d592791465c1678cab3a2bb6cd3e8",
|
|
|
"translation_date": "2025-10-24T15:15:11+00:00",
|
|
|
"source_file": "6-space-game/6-end-condition/assignment.md",
|
|
|
"language_code": "ja"
|
|
|
}
|
|
|
-->
|
|
|
# サンプルゲームを作成しよう
|
|
|
|
|
|
## 課題概要
|
|
|
|
|
|
スペースゲームでゲーム終了条件や再スタート機能を習得した今、これらの概念をまったく新しいゲーム体験に応用する時が来ました。異なる終了条件パターンや再スタートの仕組みを示す独自のゲームを設計・構築してください。
|
|
|
|
|
|
この課題では、ゲームデザインについて創造的に考えながら、学んだ技術的スキルを実践することが求められます。さまざまな勝利や敗北のシナリオを探求し、プレイヤーの進行を実装し、魅力的な再スタート体験を作り出します。
|
|
|
|
|
|
## プロジェクト要件
|
|
|
|
|
|
### コアゲーム機能
|
|
|
|
|
|
あなたのゲームには以下の必須要素を含める必要があります:
|
|
|
|
|
|
**終了条件のバリエーション**: ゲームが終了する少なくとも2つの方法を実装してください:
|
|
|
- **ポイントベースの勝利**: プレイヤーが目標スコアに到達する、または特定のアイテムを収集する
|
|
|
- **ライフベースの敗北**: プレイヤーがすべてのライフまたは体力を失う
|
|
|
- **目標達成**: 敵をすべて倒す、特定のアイテムを収集する、または目標を達成する
|
|
|
- **時間制限**: 一定時間が経過する、またはカウントダウンがゼロになる
|
|
|
|
|
|
**再スタート機能**:
|
|
|
- **ゲーム状態のクリア**: 以前のゲームオブジェクトをすべて削除し、変数をリセットする
|
|
|
- **システムの再初期化**: 新しいプレイヤーステータス、敵、目標で再スタートする
|
|
|
- **ユーザーフレンドリーな操作**: ゲーム再スタートの明確な指示を提供する
|
|
|
|
|
|
**プレイヤーへのフィードバック**:
|
|
|
- **勝利メッセージ**: プレイヤーの達成を祝うポジティブなフィードバックを提供する
|
|
|
- **敗北メッセージ**: 再挑戦を促す励ましのメッセージを提供する
|
|
|
- **進行状況の表示**: 現在のスコア、ライフ、または目標の状態を表示する
|
|
|
|
|
|
### ゲームアイデアとインスピレーション
|
|
|
|
|
|
以下のゲームコンセプトから選ぶか、独自のアイデアを作成してください:
|
|
|
|
|
|
#### 1. コンソールアドベンチャーゲーム
|
|
|
戦闘メカニクスを備えたテキストベースのアドベンチャーを作成:
|
|
|
|
|
|
```
|
|
|
Hero> Strikes with broadsword - orc takes 3p damage
|
|
|
Orc> Hits with club - hero takes 2p damage
|
|
|
Hero> Kicks - orc takes 1p damage
|
|
|
Game> Orc is defeated - Hero collects 2 coins
|
|
|
Game> ****No more monsters, you have conquered the evil fortress****
|
|
|
```
|
|
|
|
|
|
**実装すべき主な機能:**
|
|
|
- **ターン制戦闘**で異なる攻撃オプションを提供
|
|
|
- プレイヤーと敵の**体力ポイント**
|
|
|
- コインやアイテムを収集する**インベントリシステム**
|
|
|
- 難易度が異なる複数の敵タイプ
|
|
|
- 敵をすべて倒したときの**勝利条件**
|
|
|
|
|
|
#### 2. コレクションゲーム
|
|
|
- **目標**: 障害物を避けながら特定のアイテムを収集する
|
|
|
- **終了条件**: 目標の収集数に到達する、またはすべてのライフを失う
|
|
|
- **進行**: ゲームが進むにつれてアイテムが収集しにくくなる
|
|
|
|
|
|
#### 3. パズルゲーム
|
|
|
- **目標**: 難易度が徐々に上がるパズルを解く
|
|
|
- **終了条件**: すべてのレベルをクリアする、または移動数/時間が尽きる
|
|
|
- **再スタート**: 進行状況をクリアして最初のレベルにリセット
|
|
|
|
|
|
#### 4. 防衛ゲーム
|
|
|
- **目標**: 敵の波から基地を守る
|
|
|
- **終了条件**: すべての波を生き延びる(勝利)または基地が破壊される(敗北)
|
|
|
- **進行**: 敵の波が難易度と数を増加させる
|
|
|
|
|
|
## 実装ガイドライン
|
|
|
|
|
|
### 始め方
|
|
|
|
|
|
1. **ゲームデザインを計画する**:
|
|
|
- 基本的なゲームプレイループをスケッチする
|
|
|
- 終了条件を明確に定義する
|
|
|
- 再スタート時にリセットする必要があるデータを特定する
|
|
|
|
|
|
2. **プロジェクト構造を設定する**:
|
|
|
```
|
|
|
my-game/
|
|
|
├── index.html
|
|
|
├── style.css
|
|
|
├── game.js
|
|
|
└── README.md
|
|
|
```
|
|
|
|
|
|
3. **コアゲームループを作成する**:
|
|
|
- ゲーム状態を初期化する
|
|
|
- ユーザー入力を処理する
|
|
|
- ゲームロジックを更新する
|
|
|
- 終了条件を確認する
|
|
|
- 現在の状態を描画する
|
|
|
|
|
|
### 技術要件
|
|
|
|
|
|
**モダンJavaScriptを使用する**:
|
|
|
- 変数宣言に`const`と`let`を適用する
|
|
|
- 適切な場所でアロー関数を使用する
|
|
|
- テンプレートリテラルや分割代入などのES6+機能を実装する
|
|
|
|
|
|
**イベント駆動型アーキテクチャ**:
|
|
|
- ユーザー操作のイベントハンドラーを作成する
|
|
|
- イベントを通じてゲーム状態の変更を実装する
|
|
|
- 再スタート機能のためのイベントリスナーを使用する
|
|
|
|
|
|
**クリーンコードの実践**:
|
|
|
- 単一の責任を持つ関数を書く
|
|
|
- 説明的な変数名や関数名を使用する
|
|
|
- ゲームロジックやルールを説明するコメントを追加する
|
|
|
- コードを論理的なセクションに整理する
|
|
|
|
|
|
## 提出要件
|
|
|
|
|
|
### 提出物
|
|
|
|
|
|
1. **完成したゲームファイル**: ゲームを実行するために必要なすべてのHTML、CSS、JavaScriptファイル
|
|
|
2. **README.md**: 以下を説明するドキュメント:
|
|
|
- ゲームの遊び方
|
|
|
- 実装した終了条件
|
|
|
- 再スタートの手順
|
|
|
- 特別な機能やメカニクス
|
|
|
3. **コードコメント**: ゲームロジックやアルゴリズムの明確な説明
|
|
|
|
|
|
### テストチェックリスト
|
|
|
|
|
|
提出前に、以下を確認してください:
|
|
|
|
|
|
- [ ] **ブラウザコンソールでエラーなく実行できる**
|
|
|
- [ ] 指定された通りに**複数の終了条件を実装している**
|
|
|
- [ ] **クリーンな状態で再スタートできる**
|
|
|
- [ ] ゲーム状態についてプレイヤーに**明確なフィードバックを提供している**
|
|
|
- [ ] **モダンJavaScript**の構文とベストプラクティスを使用している
|
|
|
- [ ] **README.mdに包括的なドキュメント**を含んでいる
|
|
|
|
|
|
## 評価基準
|
|
|
|
|
|
| 評価基準 | 優秀 (4) | 良好 (3) | 発展途上 (2) | 初歩的 (1) |
|
|
|
|----------|----------|-----------|--------------|------------|
|
|
|
| **ゲーム機能** | 複数の終了条件、スムーズな再スタート、洗練されたゲームプレイ体験を備えた完全なゲーム | 基本的な終了条件と機能的な再スタートメカニズムを備えた完全なゲーム | 一部の終了条件が実装され、再スタートに軽微な問題がある部分的なゲーム | 限られた機能と重大なバグを持つ未完成のゲーム |
|
|
|
| **コード品質** | モダンJavaScriptの実践を使用したクリーンで整理されたコード、包括的なコメント、優れた構造 | モダンな構文を使用した良好なコード構成、適切なコメント、明確な構造 | 一部モダンな実践を使用した基本的なコード構成、最小限のコメント | 古い構文を使用した不十分なコード構成、コメントや構造が欠如 |
|
|
|
| **ユーザー体験** | 明確な指示、優れたフィードバック、魅力的な終了/再スタート体験を備えた直感的なゲームプレイ | 適切な指示とフィードバックを備えた良好なゲームプレイ、機能的な終了/再スタート | 最小限の指示とフィードバックを備えた基本的なゲームプレイ | 不明瞭な指示と不十分なユーザーフィードバックを備えた混乱したゲームプレイ |
|
|
|
| **技術的実装** | ゲーム開発の概念、イベント処理、状態管理の習得を示す | ゲーム概念の確固たる理解と良好な実装を示す | 基本的な理解と許容可能な実装を示す | 限られた理解と不十分な実装を示す |
|
|
|
| **ドキュメント** | 明確な指示、十分に文書化されたコード、徹底的なテスト証拠を備えた包括的なREADME | 明確な指示と適切なコードコメントを備えた良好なドキュメント | 最小限の指示を備えた基本的なドキュメント | 不十分または欠如したドキュメント |
|
|
|
|
|
|
### 評価スケール
|
|
|
- **優秀 (16-20点)**: 創造的な機能と洗練された実装で期待を超える
|
|
|
- **良好 (12-15点)**: すべての要件を満たし、堅実な実行を示す
|
|
|
- **発展途上 (8-11点)**: ほとんどの要件を満たし、軽微な問題がある
|
|
|
- **初歩的 (4-7点)**: 一部の要件を満たしているが、大幅な改善が必要
|
|
|
|
|
|
## 追加学習リソース
|
|
|
|
|
|
- [MDNゲーム開発ガイド](https://developer.mozilla.org/en-US/docs/Games)
|
|
|
- [JavaScriptゲーム開発チュートリアル](https://developer.mozilla.org/en-US/docs/Games/Tutorials)
|
|
|
- [Canvas APIドキュメント](https://developer.mozilla.org/en-US/docs/Web/API/Canvas_API)
|
|
|
- [ゲームデザインの原則](https://www.gamasutra.com/blogs/)
|
|
|
|
|
|
> 💡 **プロのヒント**: シンプルに始めて、徐々に機能を追加してください。バグのある複雑なゲームよりも、洗練されたシンプルなゲームの方が良いです!
|
|
|
|
|
|
---
|
|
|
|
|
|
**免責事項**:
|
|
|
この文書はAI翻訳サービス[Co-op Translator](https://github.com/Azure/co-op-translator)を使用して翻訳されています。正確性を追求しておりますが、自動翻訳には誤りや不正確な部分が含まれる可能性があります。元の言語で記載された文書を正式な情報源としてお考えください。重要な情報については、専門の人間による翻訳を推奨します。この翻訳の使用に起因する誤解や誤解について、当社は責任を負いません。 |