以下是一份設計「以 Ditto(來自 PokeAPI)為角色,實現 Kahoot 風格雙人數學競賽並在答對時觸發子彈攻擊動畫」的 Chain of Thought(思考流程),供你在開發時參考:
-
需求釐清
-
雙人模式:玩家 A、玩家 B 各自作答。
-
題目類型:數學選擇題(四選一)。
-
正確回答 → 該玩家從自己角色朝對方發射「子彈攻擊」動畫。
-
使用 Ditto 角色:從 PokeAPI 抓取 Ditto 的圖像與名稱。
-
遊戲介面:題目區、選項按鈕區、雙方角色區、分數顯示區。
-
-
專案結構規劃
/index.html ← Canvas + UI 容器 /style.css ← 版面與動畫樣式 /game.js ← 邏輯:資料抓取、題庫管理、遊戲流程、動畫 /assets/ ← 若需本地備份 Ditto 圖像或子彈素材 -
抓取 Ditto 資料
-
使用
fetch("https://pokeapi.co/api/v2/pokemon/ditto")取得 Ditto JSON。 -
從回傳中提取
sprites.front_default(或其他可用圖像)作為角色素材。 -
同時可取得
name(英文名稱)作為角色標籤。
-
-
設定遊戲畫布與 UI
-
Canvas:用於渲染角色、子彈與攻擊動畫。
-
HTML 元素:
-
題目文字
<div id="question"> -
選項按鈕
<button class="option">×4 -
分數顯示
<div id="scoreA">、<div id="scoreB">
-
-
CSS:確保 Canvas 層在背景,UI 層置頂且響應式佈局。
-
-
題庫與題目生成
-
準備一組國中級數學題庫(可硬編、或動態生成簡單運算題)。
-
每題包含:
questionText、choices(陣列)、correctIndex。 -
隨機打散選項順序。
-
-
遊戲流程管理
-
初始化:載入 Ditto 圖像,顯示初始畫面與「開始遊戲」按鈕。
-
出題:顯示新題目與選項,啟動倒數計時(若需要)。
-
監聽按鈕:玩家 A/B 按下選項後,判斷其身份與答案正誤。
-
-
判斷答案與觸發動畫
-
若玩家答對:
-
增加該玩家分數。
-
在 Canvas 上以該玩家 Ditto 位置為發射點,生成一顆子彈物件,朝對方 Ditto 位置移動。
-
-
若答錯:可考慮:不觸發攻擊、或小懲罰(如扣分、動畫提示錯誤)。
-
-
子彈攻擊動畫實作
-
子彈物件:
{ x, y, vx, vy, radius }。 -
每個遊戲循環(
requestAnimationFrame):更新所有子彈座標、渲染。 -
碰撞檢測:當子彈抵達對方角色範圍 → 顯示爆炸特效,移除子彈。
-
-
分數與回合管理
-
顯示即時分數,當任一玩家達到預設分數(如 10 分)或題庫用盡 → 結束遊戲。
-
結算畫面:展示勝利者,並可選擇重新開始。
-
-
錯誤處理與 UX 優化
-
Ditto 圖像載入失敗 → 顯示替代圖像或文字提示。
-
題目載入/生成異常 → 重試或跳過。
-
按鈕防連點:答題後立即禁用選項,避免重複觸發。
-
-
擴充思考
-
多種寶可夢角色:不只 Ditto,可依玩家選擇不同寶可夢。
-
子彈多樣化:不同角色對應不同子彈特效。
-
增加「技能」按鈕:玩家可選擇特殊攻擊或防禦。
-
加入背景音樂、音效提升沉浸感。
-
透過以上思考流程,你可以一步步將 PokeAPI 的 Ditto 納入遊戲,並實現 Kahoot 風格的雙人數學競賽,答對即發射子彈攻擊對手的動畫效果。祝開發順利!
