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

100 lines
4.3 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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