|
|
# 建立範例遊戲
|
|
|
|
|
|
## 作業概覽
|
|
|
|
|
|
既然你已經掌握了太空遊戲中的遊戲結束條件和重啟功能,現在是時候將這些概念應用於全新的遊戲體驗。你將設計並製作自己的遊戲,展示不同的結束條件模式和重啟機制。
|
|
|
|
|
|
本作業挑戰你對遊戲設計的創意思考,同時練習你學到的技術技能。你將探索不同的勝利與失敗場景、實作玩家成長,並創造吸引人的重啟體驗。
|
|
|
|
|
|
## 專案需求
|
|
|
|
|
|
### 核心遊戲功能
|
|
|
|
|
|
你的遊戲必須包含以下關鍵元素:
|
|
|
|
|
|
**結束條件多樣性**:實作至少兩種不同的遊戲結束方式:
|
|
|
- **基於點數的勝利**:玩家達到目標分數或收集特定物品
|
|
|
- **基於生命的失敗**:玩家失去所有可用生命或生命值
|
|
|
- **目標完成**:所有敵人被擊敗、特定物品被收集或目標達成
|
|
|
- **基於時間**:遊戲在設定時間結束或倒數計時歸零時結束
|
|
|
|
|
|
**重啟功能**:
|
|
|
- **清除遊戲狀態**:移除所有先前遊戲物件並重設變數
|
|
|
- **重新初始化系統**:以新的玩家狀態、敵人和目標重新開始
|
|
|
- **使用者友善的操作**:提供明確的重啟遊戲指示
|
|
|
|
|
|
**玩家回饋**:
|
|
|
- **勝利訊息**:透過正面回饋慶祝玩家成就
|
|
|
- **失敗訊息**:提供鼓勵話語激勵玩家重玩
|
|
|
- **進度指示**:顯示當前分數、生命或目標狀態
|
|
|
|
|
|
### 遊戲點子與靈感
|
|
|
|
|
|
選擇以下遊戲概念其一或自行創作:
|
|
|
|
|
|
#### 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/)
|
|
|
|
|
|
> 💡 **專業提示**:從簡單開始,逐步加入功能。一款精心打磨的簡單遊戲比有漏洞的複雜遊戲更好!
|
|
|
|
|
|
---
|
|
|
|
|
|
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
|
|
|
**免責聲明**:
|
|
|
本文件係使用 AI 翻譯服務 [Co-op Translator](https://github.com/Azure/co-op-translator) 進行翻譯。雖然我們致力於提供準確的翻譯,但請注意,自動翻譯可能存在錯誤或不準確之處。原始語言版本的文件應被視為權威來源。對於重要資訊,建議採用專業人工翻譯。我們對因使用此翻譯而產生的任何誤解或錯誤解讀概不負責。
|
|
|
<!-- CO-OP TRANSLATOR DISCLAIMER END --> |