經典的吃豆人遊戲一直是程式設計入門的絕佳練習題目。本文提供一個基於 Java AWT 實作的完整吃豆人遊戲專案,包含遊戲主邏輯、幽靈 AI、雙緩衝繪圖、關卡切換與過場動畫等核心功能,原始碼結構清晰,適合初學者研究遊戲迴圈與圖形處理機制。
VolatileImage 實現硬體加速的雙緩衝繪圖,有效消除閃爍。Timer 類別控制幀率,支援動態 FPS 計算與平滑遊戲迴圈。Event 模型,相容性極佳。主類別 Pacgame 繼承 Panel 並實作 Runnable,作為遊戲容器與主迴圈。init() 負責載入圖片資源(main.png、pacchr.png)、初始化迷宮管理器(MazeManager)、地圖管理器(MapManager)、精靈管理器(SpriteManager)與各角色精靈。Timer 以固定 16ms 間隔(約 60 FPS)驅動 notifyFrame(),配合 waitFrame() 的 wait()/notifyAll() 機制實現精準幀率控制。
遊戲主流程位於 run():初始化分數與殘機,進入 gameMain() 逐關進行。關卡內部迴圈處理幽靈移動(spmanager.run())、碰撞檢測、吃豆子/能量豆邏輯、玩家輸入(pac.setKey(key))與勝負判定。吃到能量豆觸發幽靈恐懼狀態,連續吃鬼分數倍增(100, 200, 400...),並顯示分數飛字特效(ChipSprite)。
public void run() {
while (true) {
score = 0; number1 = 3; int stage = 1;
esaInit(); loadOK = true;
while (number1 > 0) {
while (gameMain(stage) == 2) {
if (stage == 2) gameTheater();
stage++; number1++; esaInit();
}
}
// Game Over 流程...
}
}
gameTheater() 實作關卡過場動畫:吃豆人與紅幽靈在螢幕左右來回穿梭,展示簡易插值動畫邏輯。
完整專案原始碼與圖片資源可從以下位置下載:
解壓後以 Java 8+ 編譯執行 org.loon.test.Pacgame 即可啟動遊戲。專案使用 Apache License 2.0 授權,歡迎二次開發與學習研究。

本文轉載自「Java究竟怎麼玩」博客,原文地址:https://cping1982.blog.51cto.com/601635/116833