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

4.0 KiB

模擬設計一款遊戲:應用設計模式

作業概述

利用你新學到的設計模式知識,創造一個簡單的遊戲原型!這個作業將幫助你練習架構模式(繼承或組合)以及課程中學到的 pub/sub 通訊系統。

指示

創造一個簡單的遊戲表示,展示本課程的設計模式。你的遊戲應該具備功能性,但不需要複雜的圖形 — 重點在於底層架構和通訊模式。

要求

選擇你的架構模式:

  • 選項 A:使用基於類別的繼承(如 GameObjectMovableHero 範例)
  • 選項 B:使用組合(如工廠函式方法搭配混合行為)

實作通訊:

  • 包含 一個 EventEmitter 類別用於 pub/sub 訊息傳遞
  • 設定 至少 2-3 種不同訊息類型(如 PLAYER_MOVEENEMY_SPAWNSCORE_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 */ }

測試你的實作

驗證程式運作的方法:

  • 測試 事件觸發時物件是否移動或改變
  • 確認 多個物件是否能對同一事件作出反應
  • 檢查 是否能新增行為而不修改現有程式碼
  • 確保 鍵盤/滑鼠輸入正確觸發遊戲事件

繳交指引

你的繳交應包含:

  1. JavaScript 檔案 實作你的遊戲
  2. HTML 檔案 用於執行和測試你的遊戲(可簡單)
  3. 註解 說明選用的模式及原因
  4. 簡短文檔 說明你的訊息類型及其功能

評分標準

評分項目 優秀3 分) 足夠2 分) 需改進1 分)
架構模式 正確實作繼承或組合,有清楚的類別/物件階層 使用選擇的模式但有小問題或不一致 嘗試使用模式但實作有重大問題
Pub/Sub 實作 EventEmitter 正確運作,支援多種訊息類型及事件流程 基本 pub/sub 系統運作且有事件處理 有事件系統但不穩定或無法正常運作
遊戲功能 三個以上互動元素能透過事件溝通 兩個互動元素且有基本事件通信 一個元素回應事件或有簡單互動
程式碼品質 程式碼乾淨、有良好註解、組織合理且採用現代 JavaScript 一般組織與註解尚可 程式碼可用但缺乏組織或清楚註解

加分項目:

  • 具創意的遊戲機制 展現設計模式有趣的應用
  • 多種輸入方式(鍵盤及滑鼠事件皆有)
  • 可擴展架構 方便新增功能擴充

免責聲明
本文件由 AI 翻譯服務 Co-op Translator 進行翻譯。儘管我們力求準確,但請注意自動翻譯可能包含錯誤或不準確之處。原始文件的原文版本應被視為權威來源。對於重要資訊,建議尋求專業人工翻譯。本公司對於因使用本翻譯而引起的任何誤解或誤釋概不負責。