|
|
# 建立示範遊戲
|
|
|
|
|
|
## 作業概述
|
|
|
|
|
|
現在你已經掌握了太空遊戲中的遊戲結束條件與重啟功能,是時候將這些概念應用到全新遊戲體驗中。你將設計並製作一款展示不同結束條件模式與重啟機制的遊戲。
|
|
|
|
|
|
本作業挑戰你在遊戲設計上的創意思考,同時練習你所學的技術技能。你將探索不同的勝利與失敗情境,實作玩家進度,並建立引人入勝的重啟體驗。
|
|
|
|
|
|
## 專案需求
|
|
|
|
|
|
### 核心遊戲功能
|
|
|
|
|
|
你的遊戲必須包含以下基本元素:
|
|
|
|
|
|
**結束條件多樣性**:實作至少兩種不同的遊戲結束方式:
|
|
|
- **積分勝利**:玩家達成目標分數或收集特定道具
|
|
|
- **生命值失敗**:玩家失去所有生命或血量
|
|
|
- **目標完成**:消滅所有敵人、收集特定物品或達成任務目標
|
|
|
- **時間限制**:遊戲在設定時間結束或倒數計時到零時終止
|
|
|
|
|
|
**重啟功能**:
|
|
|
- **清除遊戲狀態**:移除所有先前的遊戲物件與重設變數
|
|
|
- **重置系統初始化**:以全新玩家狀態、敵人與目標重新開始
|
|
|
- **使用者友善的控制**:提供清楚的重啟遊戲說明
|
|
|
|
|
|
**玩家回饋**:
|
|
|
- **勝利訊息**:慶祝玩家成就給予正向回饋
|
|
|
- **失敗訊息**:提供鼓勵語句激勵再玩
|
|
|
- **進度指標**:顯示當前分數、生命或目標狀態
|
|
|
|
|
|
### 遊戲點子與靈感
|
|
|
|
|
|
選擇以下遊戲概念之一或自行創作:
|
|
|
|
|
|
#### 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 --> |