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.0 KiB
4.0 KiB
模擬設計一款遊戲:應用設計模式
作業概述
利用你新學到的設計模式知識,創造一個簡單的遊戲原型!這個作業將幫助你練習架構模式(繼承或組合)以及課程中學到的 pub/sub 通訊系統。
指示
創造一個簡單的遊戲表示,展示本課程的設計模式。你的遊戲應該具備功能性,但不需要複雜的圖形 — 重點在於底層架構和通訊模式。
要求
選擇你的架構模式:
- 選項 A:使用基於類別的繼承(如
GameObject→Movable→Hero範例) - 選項 B:使用組合(如工廠函式方法搭配混合行為)
實作通訊:
- 包含 一個
EventEmitter類別用於 pub/sub 訊息傳遞 - 設定 至少 2-3 種不同訊息類型(如
PLAYER_MOVE、ENEMY_SPAWN、SCORE_UPDATE) - 連結 使用者輸入(鍵盤/滑鼠)透過事件系統驅動遊戲事件
必須包含的遊戲元素:
- 至少一個玩家控制角色
- 至少一個其他遊戲物件(敵人、可收集物或環境元素)
- 基本的物件互動(碰撞、收集或通訊)
建議遊戲構想
可以考慮的簡單遊戲:
- 貪食蛇遊戲 — 蛇身會跟隨蛇頭,食物隨機產生
- 乒乓球變化版 — 球拍響應輸入,球會彈碰牆壁
- 收集者遊戲 — 玩家移動收集物品同時躲避障礙
- 塔防基礎 — 防禦塔偵測並射擊移動敵人
程式結構指引
// 範例啟始結構
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 */ }
測試你的實作
驗證程式運作的方法:
- 測試 事件觸發時物件是否移動或改變
- 確認 多個物件是否能對同一事件作出反應
- 檢查 是否能新增行為而不修改現有程式碼
- 確保 鍵盤/滑鼠輸入正確觸發遊戲事件
繳交指引
你的繳交應包含:
- JavaScript 檔案 實作你的遊戲
- HTML 檔案 用於執行和測試你的遊戲(可簡單)
- 註解 說明選用的模式及原因
- 簡短文檔 說明你的訊息類型及其功能
評分標準
| 評分項目 | 優秀(3 分) | 足夠(2 分) | 需改進(1 分) |
|---|---|---|---|
| 架構模式 | 正確實作繼承或組合,有清楚的類別/物件階層 | 使用選擇的模式但有小問題或不一致 | 嘗試使用模式但實作有重大問題 |
| Pub/Sub 實作 | EventEmitter 正確運作,支援多種訊息類型及事件流程 | 基本 pub/sub 系統運作且有事件處理 | 有事件系統但不穩定或無法正常運作 |
| 遊戲功能 | 三個以上互動元素能透過事件溝通 | 兩個互動元素且有基本事件通信 | 一個元素回應事件或有簡單互動 |
| 程式碼品質 | 程式碼乾淨、有良好註解、組織合理且採用現代 JavaScript | 一般組織與註解尚可 | 程式碼可用但缺乏組織或清楚註解 |
加分項目:
- 具創意的遊戲機制 展現設計模式有趣的應用
- 多種輸入方式(鍵盤及滑鼠事件皆有)
- 可擴展架構 方便新增功能擴充
免責聲明:
本文件由 AI 翻譯服務 Co-op Translator 進行翻譯。儘管我們力求準確,但請注意自動翻譯可能包含錯誤或不準確之處。原始文件的原文版本應被視為權威來源。對於重要資訊,建議尋求專業人工翻譯。本公司對於因使用本翻譯而引起的任何誤解或誤釋概不負責。