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/6-end-condition/assignment.md

171 lines
10 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<!--
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)を使用して翻訳されています。正確性を追求しておりますが、自動翻訳には誤りや不正確な部分が含まれる可能性があります。元の言語で記載された文書を正式な情報源としてお考えください。重要な情報については、専門の人間による翻訳を推奨します。この翻訳の使用に起因する誤解や誤解について、当社は責任を負いません。