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/1-introduction/assignment.md

93 lines
4.1 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.

# 模擬一款遊戲:應用設計模式
## 作業概述
運用你新學到的設計模式知識,製作一個簡單的遊戲原型!此作業將幫助你練習本課程中學到的架構模式(繼承或組合)以及發佈/訂閱通訊系統。
## 指示
建立一個簡單的遊戲表示,展示本課程中的設計模式。你的遊戲應該是可運作的,但不需要複雜的圖形——重點在底層架構與通訊模式。
### 要求
**選擇你的架構模式:**
- **選項 A**:使用基於類別的繼承(如 `GameObject``Movable``Hero` 範例)
- **選項 B**:使用組合(如工廠函式方法搭配混合行為)
**實現通訊:**
- **包含** 一個 `EventEmitter` 類別以實現發佈/訂閱訊息功能
- **設定** 至少 2-3 種不同的訊息類型(如 `PLAYER_MOVE`、`ENEMY_SPAWN`、`SCORE_UPDATE`
- **連接** 使用者輸入(鍵盤 / 滑鼠)透過事件系統觸發遊戲事件
**遊戲元素包含:**
- 至少一個由玩家控制的角色
- 至少一個其他遊戲物件(敵人、可收集物品或環境元素)
- 物件間的基本互動(碰撞、收集或通訊)
### 建議遊戲題材
**可考慮的簡單遊戲:**
- **貪食蛇遊戲**——蛇身節段跟隨蛇頭,食物隨機生成
- **乒乓球變化版**——球拍回應輸入,球碰牆彈跳
- **收集者遊戲**——玩家移動收集物品,同時避開障礙
- **防禦塔基礎**——防禦塔偵測並射擊移動敵人
### 程式碼結構指引
```javascript
// 範例起始結構
const Messages = {
// 在此定義您的遊戲訊息
};
class EventEmitter {
// 您的事件系統實作
}
// 選擇類別導向或組合式方法
// 類別導向範例:
class GameObject { /* base properties */ }
class Player extends GameObject { /* player-specific behavior */ }
// 或組合式範例:
const gameObject = { /* base properties */ };
const movable = { /* movement behavior */ };
function createPlayer() { /* combine behaviors */ }
```
### 測試你的實作
**驗證你的程式碼是否運行:**
- **測試** 事件觸發時物件是否移動或改變
- **確認** 多個物件是否能回應相同事件
- **檢查** 是否能添加新行為而不修改現有程式碼
- **確保** 鍵盤 / 滑鼠輸入正確觸發遊戲事件
## 提交指南
**你的提交應包含:**
1. **JavaScript 檔案**,實現你的遊戲
2. **HTML 檔案**,執行並測試你的遊戲(可簡單)
3. **註解**,說明你選擇的設計模式與原因
4. **簡要文件**,說明你的訊息類型及其功能
## 評分標準
| 標準 | 優異 (3 分) | 適當 (2 分) | 需改善 (1 分) |
|------|-------------|-------------|---------------|
| **架構模式** | 正確實作繼承或組合,類別 / 物件層級清晰 | 使用所選模式,但有些微問題或不一致 | 嘗試使用模式,但實作有明顯問題 |
| **發佈/訂閱實作** | EventEmitter 正確運作,多訊息類型及事件流程妥當 | 基本發佈/訂閱系統運作,有部分事件處理 | 有事件系統,但不穩定或無法運作 |
| **遊戲功能性** | 三個以上互動元素,透過事件互通 | 兩個互動元素,有基本事件通訊 | 一個元素回應事件或只有基本互動 |
| **程式碼品質** | 簡潔,詳盡註解,組織邏輯清楚,且採用現代 JavaScript | 大致組織良好,註解適中 | 程式碼可運作但缺組織與清楚註解 |
**額外加分:**
- **具創意的遊戲機制**,展現設計模式有趣的應用
- **多元輸入方式**(鍵盤及滑鼠事件皆有)
- **可擴充架構**,便於未來加入新功能
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**免責聲明**
本文件係使用 AI 翻譯服務 [Co-op Translator](https://github.com/Azure/co-op-translator) 進行翻譯。雖然我們致力於確保翻譯的準確性,但請注意,自動翻譯可能包含錯誤或不準確之處。文件原文應視為權威資料來源。對於重要資訊,建議採用專業人工翻譯。我們對因使用本翻譯版本而產生的任何誤解或誤譯概不負責。
<!-- CO-OP TRANSLATOR DISCLAIMER END -->