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-HK/6-space-game/1-introduction/assignment.md

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

# 模擬設計一款遊戲:應用設計模式
## 作業概述
利用你新學到的設計模式知識,創造一個簡單的遊戲原型!這個作業將幫助你練習架構模式(繼承或組合)以及課程中學到的 pub/sub 通訊系統。
## 指示
創造一個簡單的遊戲表示,展示本課程的設計模式。你的遊戲應該具備功能性,但不需要複雜的圖形 — 重點在於底層架構和通訊模式。
### 要求
**選擇你的架構模式:**
- **選項 A**:使用基於類別的繼承(如 `GameObject``Movable``Hero` 範例)
- **選項 B**:使用組合(如工廠函式方法搭配混合行為)
**實作通訊:**
- **包含** 一個 `EventEmitter` 類別用於 pub/sub 訊息傳遞
- **設定** 至少 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 分) |
|----------|--------------|--------------|----------------|
| **架構模式** | 正確實作繼承或組合,有清楚的類別/物件階層 | 使用選擇的模式但有小問題或不一致 | 嘗試使用模式但實作有重大問題 |
| **Pub/Sub 實作** | EventEmitter 正確運作,支援多種訊息類型及事件流程 | 基本 pub/sub 系統運作且有事件處理 | 有事件系統但不穩定或無法正常運作 |
| **遊戲功能** | 三個以上互動元素能透過事件溝通 | 兩個互動元素且有基本事件通信 | 一個元素回應事件或有簡單互動 |
| **程式碼品質** | 程式碼乾淨、有良好註解、組織合理且採用現代 JavaScript | 一般組織與註解尚可 | 程式碼可用但缺乏組織或清楚註解 |
**加分項目:**
- **具創意的遊戲機制** 展現設計模式有趣的應用
- **多種輸入方式**(鍵盤及滑鼠事件皆有)
- **可擴展架構** 方便新增功能擴充
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**免責聲明**
本文件由 AI 翻譯服務 [Co-op Translator](https://github.com/Azure/co-op-translator) 進行翻譯。儘管我們力求準確,但請注意自動翻譯可能包含錯誤或不準確之處。原始文件的原文版本應被視為權威來源。對於重要資訊,建議尋求專業人工翻譯。本公司對於因使用本翻譯而引起的任何誤解或誤釋概不負責。
<!-- CO-OP TRANSLATOR DISCLAIMER END -->