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

4.1 KiB

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

作業概述

運用你新學到的設計模式知識,製作一個簡單的遊戲原型!此作業將幫助你練習本課程中學到的架構模式(繼承或組合)以及發佈/訂閱通訊系統。

指示

建立一個簡單的遊戲表示,展示本課程中的設計模式。你的遊戲應該是可運作的,但不需要複雜的圖形——重點在底層架構與通訊模式。

要求

選擇你的架構模式:

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

實現通訊:

  • 包含 一個 EventEmitter 類別以實現發佈/訂閱訊息功能
  • 設定 至少 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 分)
架構模式 正確實作繼承或組合,類別 / 物件層級清晰 使用所選模式,但有些微問題或不一致 嘗試使用模式,但實作有明顯問題
發佈/訂閱實作 EventEmitter 正確運作,多訊息類型及事件流程妥當 基本發佈/訂閱系統運作,有部分事件處理 有事件系統,但不穩定或無法運作
遊戲功能性 三個以上互動元素,透過事件互通 兩個互動元素,有基本事件通訊 一個元素回應事件或只有基本互動
程式碼品質 簡潔,詳盡註解,組織邏輯清楚,且採用現代 JavaScript 大致組織良好,註解適中 程式碼可運作但缺組織與清楚註解

額外加分:

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

免責聲明
本文件係使用 AI 翻譯服務 Co-op Translator 進行翻譯。雖然我們致力於確保翻譯的準確性,但請注意,自動翻譯可能包含錯誤或不準確之處。文件原文應視為權威資料來源。對於重要資訊,建議採用專業人工翻譯。我們對因使用本翻譯版本而產生的任何誤解或誤譯概不負責。