PADDLE BALL
Introductions PADDLE BALL
槳球遊戲是一款用 Flutter 建造的經典街機遊戲。
1. 遊戲架構與技術:這款球拍遊戲使用 Flutter 開發,充分利用其高效能渲染能力達到流暢的動畫效果。動畫引擎:遊戲循環由一個使用 SingleTickerProviderStateMixin 的 StatefulWidget 和一個固定持續時間(約 60 FPS 時為 16 毫秒)的 AnimationController 驅動。每個遊戲刻都會呼叫 _updateGame 方法,該方法處理所有物理和碰撞檢測。渲染:遊戲元素(球、球拍、磚塊)使用 Flutter 元件組合進行渲染:在 Stack 中使用 Transform.translate 元件,根據計算出的 $(\text{x}, \text{y})$ 座標進行精確定位;並使用樣式化的 Container 元件來實現視覺效果(漸層陰影)。座標系:物理引擎在一個中心座標系中運行,其中 $(0, 0)$ 為螢幕中心,從而簡化了與邊緣和球拍的碰撞邏輯。 2. 核心遊戲機制:A.球的運動:球的位置 $(\text{ballX}, \text{ballY})$ 會根據其當前速度向量 $(\text{velocityX}, \text{velocityY})$ 在每一幀進行更新。速度與等級:球的速度會隨著等級的提升而增加,使遊戲難度逐漸提升(velocityX/Y = 4 + (level * 0.5))。碰撞偵測:當球撞擊螢幕的垂直(左/右)或水平(上)邊界時,對應的速度分量會被反轉(velocityX = -velocityX 或 velocityY = -velocityY)。球拍控制:球拍的水平位置 (paddleX) 由使用者透過 GestureDetector 的 onPanUpdate 回呼函數拖曳輸入直接控制。智慧彈跳:球拍碰撞偵測採用智慧彈跳計算。出球角度由擊球點在球拍上的位置決定(越靠近邊緣,水平速度分量越大),鼓勵玩家使用斜角擊球來擊中難以觸及的磚塊。 C. 磚塊和得分初始化:磚塊初始化在一個網格中(預設為 5×6),顏色根據其行位置而定。碰撞:每次遊戲更新都會檢查磚塊碰撞。當球與磚塊碰撞時,磚塊被標記為已摧毀(isDestroyed = true),得分增加 10 分,並且球的垂直或水平方向根據碰撞側反轉。遊戲目標:升級:當所有磚塊都被摧毀時,關卡進入下一關。系統會初始化一組新的磚塊,球速會增加。生命值損失:如果球落到球拍垂直位置(paddleY)以下,玩家將失去一條生命。球被重置到螢幕頂部中心位置。遊戲結束:當玩家生命值耗盡(生命值 <= 0)時,遊戲結束。 3. 使用者介面和狀態抬頭顯示 (HUD):在螢幕頂部顯示目前分數、生命值和關卡。遊戲狀態:應用程式管理三種不同的狀態:開始畫面:顯示說明和一個「開始遊戲」按鈕,用於開始第 1 關。遊戲進行中:核心遊戲循環,此時球拍、球和磚塊可見並有動畫效果。遊戲結束:顯示最終得分和達到的關卡,以及一個「再玩一次」按鈕,用於重置遊戲狀態。