蓋遊戲引擎
請 Claude 蓋 tic-tac-toe 規則
⏱ 預估 ~7 分鐘
01 · 讀一讀
遊戲引擎是你 app 大腦。它不知道 WebSocket、HTML、玩家。它就知道 tic-tac-toe 怎麼運作:3x3 棋盤、兩個符號、回合、勝利條件。
把這邏輯放自己檔 — 跟 server 程式分開 — 叫關注點分離(separation of concerns)模式。遊戲引擎是獨立模組,能被任何 server、任何測試框架、任何 UI 用。
💡 想像一下想像籃球賽裁判。裁判不開球場、賣票、操計分板。他們就執行規則。你遊戲引擎是裁判 — 它只在乎移動是否有效、有沒有人贏。
重點整理
- 關注點分離:遊戲邏輯放自己檔
- 遊戲引擎不知道 WebSocket 或 HTML
- 處理:棋盤狀態、移動驗證、回合追蹤、勝利偵測
- 讓它容易測跟重用
02 · Prompt 範本
請 Claude 建遊戲引擎模組。對 class 該做什麼具體 — 這比「做 tic-tac-toe 遊戲」產出好太多。
幫我建一個 game.js 模組,裡面包含一個 TicTacToeGame class。要求:(1) 把 board 初始化為長度 9、全部填 null 的陣列。(2) 追蹤目前輪到誰——X 永遠先手。(3) 提供一個 makeMove(cellIndex) 方法,要驗證這步是否合法(cell 必須在 0-8、cell 必須是空的、必須輪到該玩家),放上對應符號,檢查是否獲勝或平手,並回傳一個物件 { valid, symbol, winner, isDraw, board }。(4) 提供一個 getState() 方法回傳目前的 board 和輪到誰。(5) 檢查全部 8 條獲勝連線(3 橫、3 直、2 對角)。(6) 用 module.exports 匯出這個 class。03 · 看程式碼
Claude 產出遊戲引擎後,找勝利檢查邏輯。這是你該懂、不只接受的部分。
勝利偵測:8 條勝利線
const WINNING_LINES = [
[0, 1, 2], [3, 4, 5], [6, 7, 8], // rows
[0, 3, 6], [1, 4, 7], [2, 5, 8], // columns
[0, 4, 8], [2, 4, 6] // diagonals
];
// Board layout:
// 0 | 1 | 2
// ---+---+---
// 3 | 4 | 5
// ---+---+---
// 6 | 7 | 8
棋盤是 9 cell 的平陣列。Index 0-2 是上排、3-5 中排、6-8 下排。玩家在任 8 種可能線填滿三 cell 就贏。每步後,引擎檢查全 8 線 — 任線有三個比對非 null 符號,那玩家贏。9 cell 全填無贏家就和局。
04 · 真機練習
在 Node.js REPL 直接測遊戲引擎。真實工程師就是這樣連任何東西前驗證程式。
05 · 確認清單
確認你遊戲引擎處理這些邊界情況。在 Node REPL 試每個或請 Claude 寫快速測試。
- X 永遠先 — 第一步永遠是 X
- 在佔用 cell 放移動回 valid: false
- 出順序玩回 valid: false
- 贏後不准更多移動
- 滿棋盤無贏家正確回報和局
06 · 選擇題
為什麼建遊戲引擎當跟 server 分開的模組有價值?
- 能獨立測、用在其他專案、讓 server 程式專注
- JavaScript 要求每個 class 在自己檔
- 讓程式更難懂但跑更快
- Socket.io 不能存取跟 Express 同檔的程式
⚠ 完整互動體驗需要 JavaScript。請啟用 JavaScript 後重新整理。
※ 本站為獨立繁中教學專案,非 Anthropic 官方產品。Claude™ 為 Anthropic, PBC 商標。