Exemplo n.º 1
0
 public void RevealSquare(int row, int col)
 {
     if (gameOver || board[row, col].IsRevealed)
     {
         return;
     }
     board[row, col].IsRevealed = true;
     if (board[row, col].IsFlagged)
     {
         UnflagSquare(row, col);
     }
     if (board[row, col].IsMine)
     {
         MineRevealed.Raise(this, new SquareEventArgs(row, col));
         gameOver = true;
         timer.Stop();
         GameLost.Raise(this, EventArgs.Empty);
     }
     else
     {
         SafeSquareRevealed.Raise(this, new SquareEventArgs(row, col, board[row, col].AdjacentMines));
         if (board[row, col].AdjacentMines == 0)
         {
             RevealEmptySquares(row, col);
         }
     }
     if (CheckGameWon())
     {
         OnGameWon();
     }
 }
Exemplo n.º 2
0
        private bool CheckIfGameIsEnded()
        {
            if (_map.GetCells().Any(x => x.State == CellState.Boom))
            {
                GameLost.Raise(this, EventArgs.Empty);
                return(true);
            }

            if (_map.GetCells().All(x => x.State != CellState.Unknown))
            {
                GameSolved.Raise(this, EventArgs.Empty);
                return(true);
            }
            return(false);
        }