@@ -12,8 +12,8 @@ type Cell struct {
1212
1313// Board - 棋盤
1414type Board struct {
15- rows int // 總共格數
16- cols int // 總共列數
15+ Rows int // 總共格數
16+ Cols int // 總共列數
1717 cells [][]* Cell // 整格棋盤狀態
1818 minePositionShuffler positionShuffler // 亂序器用來安排地雷格子
1919 remainingFlags int // 剩餘標記數
@@ -27,6 +27,7 @@ type Game struct {
2727 IsGameOver bool // 是否遊戲結束
2828 IsPlayerWin bool // 玩家是否獲勝
2929 startTime time.Time // 遊戲開始時間
30+ MineCounts int // minecounts
3031}
3132
3233// coord - 紀錄該格字座標
@@ -49,14 +50,15 @@ func NewGame(rows, cols, mineCount int) *Game {
4950 IsGameOver : false ,
5051 IsPlayerWin : false ,
5152 startTime : time .Now ().UTC (),
53+ MineCounts : mineCount ,
5254 }
5355}
5456
5557// NewBoard - 初始化盤面
5658func NewBoard (rows , cols , mineCount int ) * Board {
5759 board := & Board {
58- rows : rows ,
59- cols : cols ,
60+ Rows : rows ,
61+ Cols : cols ,
6062 minePositionShuffler : defaultPositionShuffler ,
6163 remainingFlags : mineCount ,
6264 remainingUnRevealedCells : rows * cols - mineCount ,
@@ -76,7 +78,7 @@ func (g *Game) Init(board *Board, minePositionShuffler positionShuffler) {
7678 g .Board .minePositionShuffler = minePositionShuffler
7779 }
7880 // 無效的設定
79- if board == nil || len (board .cells ) != board .rows || len (board .cells [0 ]) != board .cols {
81+ if board == nil || len (board .cells ) != board .Rows || len (board .cells [0 ]) != board .Cols {
8082 return
8183 }
8284 // 設定資料
@@ -97,7 +99,7 @@ func (b *Board) PlaceMines(mineCount int) {
9799 return
98100 }
99101 // 蒐集所有 coord
100- coords := make ([]coord , 0 , b .cols * b .rows )
102+ coords := make ([]coord , 0 , b .Cols * b .Rows )
101103 for row := range b .cells {
102104 for col := range b .cells [row ] {
103105 coords = append (coords , coord {Row : row , Col : col })
@@ -135,8 +137,8 @@ func (b *Board) CalculateAdjacentMines() {
135137 accumCount := 0
136138 for _ , direction := range neighborDirections {
137139 neighborRow , neighborCol := row + direction .Row , col + direction .Col
138- if neighborRow >= 0 && neighborRow < b .rows &&
139- neighborCol >= 0 && neighborCol < b .cols &&
140+ if neighborRow >= 0 && neighborRow < b .Rows &&
141+ neighborCol >= 0 && neighborCol < b .Cols &&
140142 b.cells [neighborRow ][neighborCol ].IsMine {
141143 accumCount ++
142144 }
@@ -153,8 +155,8 @@ func (board *Board) GetCell(row, col int) *Cell {
153155// ToggleFlag - 標記地雷
154156func (board * Board ) ToggleFlag (row , col int ) {
155157 // 超出邊界
156- if row < 0 || row >= board .rows ||
157- col < 0 || col >= board .cols {
158+ if row < 0 || row >= board .Rows ||
159+ col < 0 || col >= board .Cols {
158160 return
159161 }
160162
@@ -191,8 +193,8 @@ func (board *Board) Reveal(row, col int) {
191193 curRow , curCol := cellCoord .Row , cellCoord .Col
192194
193195 // 超出邊界
194- if curRow < 0 || curRow >= board .rows ||
195- curCol < 0 || curCol >= board .cols {
196+ if curRow < 0 || curRow >= board .Rows ||
197+ curCol < 0 || curCol >= board .Cols {
196198 continue
197199 }
198200
0 commit comments