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

171 lines
7.3 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-22T22:54:13+00:00",
"source_file": "6-space-game/6-end-condition/assignment.md",
"language_code": "mo"
}
-->
# 建立範例遊戲
## 作業概述
現在您已經掌握了太空遊戲中的遊戲結束條件和重新開始功能,是時候將這些概念應用到一個全新的遊戲體驗中。您將設計並建立自己的遊戲,展示不同的結束條件模式和重新開始機制。
這項作業旨在挑戰您在遊戲設計方面的創造力,同時練習您所學到的技術技能。您將探索不同的勝利和失敗場景,實現玩家進程,並創造引人入勝的重新開始體驗。
## 專案需求
### 核心遊戲功能
您的遊戲必須包含以下基本元素:
**多樣化的結束條件**:至少實現兩種不同的遊戲結束方式:
- **基於分數的勝利**:玩家達到目標分數或收集特定物品
- **基於生命的失敗**:玩家失去所有可用生命或健康值
- **完成目標**:擊敗所有敵人、收集特定物品或完成目標
- **基於時間**:遊戲在設定的時間結束或倒數計時歸零
**重新開始功能**
- **清除遊戲狀態**:移除所有先前的遊戲物件並重置變數
- **重新初始化系統**:以新的玩家狀態、敵人和目標重新開始
- **用戶友好的控制**:提供清晰的重新開始遊戲指示
**玩家反饋**
- **勝利訊息**:用正面的反饋慶祝玩家的成就
- **失敗訊息**:提供鼓勵性的訊息以激勵玩家重新挑戰
- **進度指示器**:顯示當前分數、生命或目標狀態
### 遊戲創意與靈感
選擇以下遊戲概念之一或創造自己的遊戲:
#### 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) 進行翻譯。儘管我們努力確保翻譯的準確性,但請注意,自動翻譯可能包含錯誤或不準確之處。原始文件的母語版本應被視為權威來源。對於關鍵信息,建議使用專業人工翻譯。我們對因使用此翻譯而產生的任何誤解或誤釋不承擔責任。