這個 repository 主要用來 demo 使用 golang 來實做 2048 遊戲的功能
目標會採用 ebiten 來作畫面展現的遊戲引擎
預期會先從核心功能開始寫,最後再加上 ebiten 來作畫面渲染
2048 是一款單人益智遊戲,玩家透過滑動方格中的數字進行合併, 最終目標是在盤面上生成一個 數字 2048 的方塊。 遊戲盤面為 4x4,每格可以放置一個數字(通常是 2 的冪次)。
遊戲基本迴圈如下:
- 初始化:隨機在兩個位置生成 2 或 4。
- 玩家滑動(上下左右四個方向)。
- 壓縮數字:將所有數字往滑動方向靠攏。
- 合併數字:相鄰且數值相同的數字會合併,數值加倍。
- 再壓縮:合併後的空格再次填補。
- 新增數字:在隨機空格生成 2 或 4。
- 檢查終止條件(勝利 / 失敗)。
- 重複步驟 2~7。
這是 2048 最重要的邏輯,先用向左滑為例:
操作前 | 壓縮非零數字 | 合併相同數字 | 再壓縮 |
---|---|---|---|
2 0 2 4 | 2 2 4 0 | 4 0 4 0 | 4 4 0 0 |
4 4 4 4 | 4 4 4 4 | 8 0 8 0 | 8 8 0 0 |
- 壓縮(Compress):將所有非零數字往滑動方向移動。
- 合併(Merge):相鄰且相同的數字合併成一個,數值翻倍。
- 再次壓縮:把合併後出現的空格補齊。
遊戲會在以下情況結束:
-
勝利條件
盤面上出現數字 2048(或玩家自訂目標,例如 4096)。
-
失敗條件
盤面已無空格,且 四個方向都無法再合併。