public void MakeMove(UserMove move) { var cell = _gameBoard.GetCell(move.Row, move.Col); if (cell == null || cell.IsFlipped) { return; } if (move.IsFlag) { if (!cell.IsFlagged) { if (cell.IsBomb) { _correctFlags++; } _numFlags++; cell.IsFlagged = true; } else { if (cell.IsBomb) { _correctFlags--; } _numFlags--; cell.IsFlagged = false; } } else { if (cell.IsFlagged) { _numFlags--; cell.IsFlagged = false; } if (cell.IsBomb) { GameState = GameState.Loss; cell.IsFlipped = true; return; } if (cell.Number == 0) { RevealEmptyCells(cell); } else { cell.IsFlipped = true; _numFlips += 1; } } if (!IsWin()) { return; } GameState = GameState.Win; RevealAllCells(); }