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.
4.3 KiB
4.3 KiB
模擬遊戲:應用設計模式
作業概述
運用您新學到的設計模式知識,創建一個簡單的遊戲原型!這項作業將幫助您練習架構模式(繼承或組合)以及課程中學到的發布/訂閱通信系統。
指導說明
創建一個簡單的遊戲表示,展示本課程中的設計模式。您的遊戲應該是功能性的,但不需要複雜的圖形——重點在於底層架構和通信模式。
要求
選擇您的架構模式:
- 選項 A:使用基於類的繼承(例如
GameObject→Movable→Hero的例子) - 選項 B:使用組合(例如使用混合行為的工廠函數方法)
實現通信:
- 包含一個
EventEmitter類,用於發布/訂閱消息 - 設置至少 2-3 種不同的消息類型(例如
PLAYER_MOVE、ENEMY_SPAWN、SCORE_UPDATE) - 連接用戶輸入(鍵盤/鼠標)到通過事件系統的遊戲事件
遊戲元素需包含:
- 至少一個玩家控制的角色
- 至少一個其他遊戲物件(敵人、可收集物品或環境元素)
- 物件之間的基本交互(碰撞、收集或通信)
建議的遊戲想法
可考慮的簡單遊戲:
- 貪吃蛇遊戲——蛇的身體跟隨蛇頭移動,食物隨機生成
- 乒乓球變體——球拍響應輸入,球在牆壁上反彈
- 收集者遊戲——玩家四處移動收集物品,同時避開障礙物
- 塔防基礎——塔檢測並射擊移動的敵人
程式碼結構指南
// Example starting structure
const Messages = {
// Define your game messages here
};
class EventEmitter {
// Your event system implementation
}
// Choose either class-based OR composition approach
// Class-based example:
class GameObject { /* base properties */ }
class Player extends GameObject { /* player-specific behavior */ }
// OR Composition example:
const gameObject = { /* base properties */ };
const movable = { /* movement behavior */ };
function createPlayer() { /* combine behaviors */ }
測試您的實現
驗證您的程式碼是否有效:
- 測試物件在事件觸發時是否移動或改變
- 確認多個物件是否能響應同一事件
- 檢查是否可以在不修改現有程式碼的情況下添加新行為
- 確保鍵盤/鼠標輸入能正確觸發遊戲事件
提交指南
您的提交應包括:
- JavaScript 文件,包含您的遊戲實現
- HTML 文件,用於運行和測試您的遊戲(可以很簡單)
- 註解,解釋您選擇的模式及原因
- 簡要文檔,描述您的消息類型及其功能
評分標準
| 評分標準 | 優秀 (3 分) | 合格 (2 分) | 需改進 (1 分) |
|---|---|---|---|
| 架構模式 | 正確實現繼承或組合,具有清晰的類/物件層次結構 | 使用選擇的模式,但有輕微問題或不一致 | 嘗試使用模式,但實現存在重大問題 |
| 發布/訂閱實現 | EventEmitter 正常運作,具有多種消息類型和正確的事件流 | 基本的發布/訂閱系統運作,但事件處理有些問題 | 存在事件系統,但運作不可靠 |
| 遊戲功能 | 三個或以上的互動元素通過事件進行通信 | 兩個互動元素具有基本事件通信 | 一個元素響應事件或基本交互 |
| 程式碼質量 | 乾淨、註解清晰的程式碼,邏輯組織良好,使用現代 JavaScript | 程式碼組織良好,註解足夠 | 程式碼可運行,但缺乏組織或清晰註解 |
加分項目:
- 創意遊戲機制,展示設計模式的有趣應用
- 多種輸入方式(鍵盤和鼠標事件)
- 可擴展的架構,易於添加新功能
免責聲明:
本文件已使用 AI 翻譯服務 Co-op Translator 進行翻譯。儘管我們努力確保翻譯的準確性,但請注意,自動翻譯可能包含錯誤或不準確之處。原始文件的母語版本應被視為權威來源。對於關鍵信息,建議使用專業人工翻譯。我們對因使用此翻譯而產生的任何誤解或誤釋不承擔責任。