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.1 KiB
4.1 KiB
模擬一款遊戲:應用設計模式
作業概述
運用你新學到的設計模式知識,製作一個簡單的遊戲原型!此作業將幫助你練習本課程中學到的架構模式(繼承或組合)以及發佈/訂閱通訊系統。
指示
建立一個簡單的遊戲表示,展示本課程中的設計模式。你的遊戲應該是可運作的,但不需要複雜的圖形——重點在底層架構與通訊模式。
要求
選擇你的架構模式:
- 選項 A:使用基於類別的繼承(如
GameObject→Movable→Hero範例) - 選項 B:使用組合(如工廠函式方法搭配混合行為)
實現通訊:
- 包含 一個
EventEmitter類別以實現發佈/訂閱訊息功能 - 設定 至少 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 分) |
|---|---|---|---|
| 架構模式 | 正確實作繼承或組合,類別 / 物件層級清晰 | 使用所選模式,但有些微問題或不一致 | 嘗試使用模式,但實作有明顯問題 |
| 發佈/訂閱實作 | EventEmitter 正確運作,多訊息類型及事件流程妥當 | 基本發佈/訂閱系統運作,有部分事件處理 | 有事件系統,但不穩定或無法運作 |
| 遊戲功能性 | 三個以上互動元素,透過事件互通 | 兩個互動元素,有基本事件通訊 | 一個元素回應事件或只有基本互動 |
| 程式碼品質 | 簡潔,詳盡註解,組織邏輯清楚,且採用現代 JavaScript | 大致組織良好,註解適中 | 程式碼可運作但缺組織與清楚註解 |
額外加分:
- 具創意的遊戲機制,展現設計模式有趣的應用
- 多元輸入方式(鍵盤及滑鼠事件皆有)
- 可擴充架構,便於未來加入新功能
免責聲明:
本文件係使用 AI 翻譯服務 Co-op Translator 進行翻譯。雖然我們致力於確保翻譯的準確性,但請注意,自動翻譯可能包含錯誤或不準確之處。文件原文應視為權威資料來源。對於重要資訊,建議採用專業人工翻譯。我們對因使用本翻譯版本而產生的任何誤解或誤譯概不負責。