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

164 lines
6.7 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.

# 建立示範遊戲
## 作業概述
現在你已經掌握了太空遊戲中的遊戲結束條件與重啟功能,是時候將這些概念應用到全新遊戲體驗中。你將設計並製作一款展示不同結束條件模式與重啟機制的遊戲。
本作業挑戰你在遊戲設計上的創意思考,同時練習你所學的技術技能。你將探索不同的勝利與失敗情境,實作玩家進度,並建立引人入勝的重啟體驗。
## 專案需求
### 核心遊戲功能
你的遊戲必須包含以下基本元素:
**結束條件多樣性**:實作至少兩種不同的遊戲結束方式:
- **積分勝利**:玩家達成目標分數或收集特定道具
- **生命值失敗**:玩家失去所有生命或血量
- **目標完成**:消滅所有敵人、收集特定物品或達成任務目標
- **時間限制**:遊戲在設定時間結束或倒數計時到零時終止
**重啟功能**
- **清除遊戲狀態**:移除所有先前的遊戲物件與重設變數
- **重置系統初始化**:以全新玩家狀態、敵人與目標重新開始
- **使用者友善的控制**:提供清楚的重啟遊戲說明
**玩家回饋**
- **勝利訊息**:慶祝玩家成就給予正向回饋
- **失敗訊息**:提供鼓勵語句激勵再玩
- **進度指標**:顯示當前分數、生命或目標狀態
### 遊戲點子與靈感
選擇以下遊戲概念之一或自行創作:
#### 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) |
|----------|---------------|----------------|----------------|--------------|
| **遊戲功能** | 遊戲完整有多重結束條件、重啟流暢與精緻遊玩體驗 | 完整遊戲含基本結束條件與重啟機制功能 | 部分結束條件實作完成,重啟可能有小問題 | 遊戲不完整,功能受限且含重大錯誤 |
| **程式碼品質** | 乾淨且良好組織,使用現代語法、詳細註解與結構優良 | 良好程式碼組織,現代語法適當,註解充足,結構清楚 | 基本組織,部分現代語法應用,註解有限 | 程式碼混亂,語法過時,缺乏註解與結構 |
| **使用者體驗** | 直覺玩法,清楚說明,優秀回饋與結束/重啟體驗 | 良好玩法,說明適當,回饋清楚,功能完整 | 基本玩法,說明有限,回饋較少 | 操作混亂,說明不足,使用者回饋差 |
| **技術實作** | 展現遊戲開發概念、事件處理及狀態管理精通 | 對遊戲概念有良好理解與實作 | 基本了解且可接受實作 | 理解有限,實作不佳 |
| **文件** | 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/)
> 💡 **專家提示**:從簡單開始,逐步增加功能。經過精心打磨的簡單遊戲,比帶有錯誤的複雜遊戲更優秀!
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**免責聲明**
本文件經由 AI 翻譯服務 [Co-op Translator](https://github.com/Azure/co-op-translator) 翻譯而成。儘管我們致力於提供準確的內容,但自動翻譯可能包含錯誤或不準確之處。原始文件的母語版本應視為權威來源。對於重要資訊,建議採用專業人工翻譯。我們不對因使用本翻譯所造成的任何誤解或誤譯負責。
<!-- CO-OP TRANSLATOR DISCLAIMER END -->