為 2048 遊戲設計一個 4x4 的二維整數陣列,作為遊戲盤面資料結構。
今天我們還不碰繪圖,僅專注在資料層,並在 CLI 印出結果,確保後續邏輯能順利運作。
在遊戲開發中,資料結構是邏輯運算的基礎,像 2048 這類棋盤型遊戲,盤面是遊戲的核心狀態:
package internal
// sideSize - 預設 sideSize
const sideSize = 4
// Game - 紀錄當下遊戲處理狀態
//
// board [][]int - 紀錄盤面狀態
type Game struct {
board [][]int
}
// Init - 初始化
func (g *Game) Init(data [][]int) {
// 建立棋盤
g.board = make([][]int, sideSize)
for index := range g.board {
g.board[index] = make([]int, sideSize)
}
// checkout input value
if len(data) != sideSize || len(data[0]) != sideSize {
return
}
// setup data
for r := range sideSize {
for c := range sideSize {
if data[r][c] != 0 {
g.board[r][c] = data[r][c]
}
}
}
}
func NewGame() *Game {
return &Game{}
}
gemini -p "請幫我為 2048 遊戲的盤面資料結構設計生成至少 5 組測試案例。
每個測試案例包含:
1. 一個 4x4 的二維整數陣列示意(用空格分隔,0 表示空格)
2. 對應的 CLI 印出格式(0 用 '.' 顯示,其他數字正常顯示)
請格式化輸出如下範例:
案例 1:
盤面數據:
2 0 0 0
0 0 4 0
0 0 0 0
0 0 0 0
CLI 印出:
2 . . .
. . 4 .
. . . .
. . . .
請直接列出 5 組此類測試案例,方便用於程式輸出驗證。"
這裏是 5 組 2048 遊戲盤面的測試案例。
2 4 0 0
8 0 0 0
16 0 4 0
0 0 0 0
CLI 印出:
2 4 . .
8 . . .
16 . 4 .
. . . .
128 64 32 16
8 0 0 2
4 0 0 4
2 4 8 16
CLI 印出:
128 64 32 16
8 . . 2
4 . . 4
2 4 8 16
0 0 0 0
0 2048 0 0
0 0 0 0
0 0 0 0
CLI 印出:
. . . .
. 2048 . .
. . . .
. . . .
16 8 4 2
32 16 8 4
64 32 16 8
128 64 32 16
CLI 印出:
16 8 4 2
32 16 8 4
64 32 16 8
128 64 32 16
0 0 0 0
0 0 0 0
0 0 0 0
0 0 0 0
CLI 印出:
. . . .
. . . .
. . . .
. . . .
https://github.com/leetcode-golang-classroom/2048-game/actions/runs/17023263946/job/48255275705