Ejemplo n.º 1
0
        private List <BoardSquare> FillSquareValue(BoardSquare square)
        {
            var adjacentSquares = GetAdjacentSquares(square);

            square.value = CountBombs(adjacentSquares);
            return(adjacentSquares);
        }
Ejemplo n.º 2
0
 private void TryAddAdjacentSquare(BoardSquare square, List <BoardSquare> adjacentSquares, int i, int j)
 {
     if (square.X + i < 0 || square.X + i >= Width || square.Y + j < 0 || square.Y + j >= Height)
     {
         return;
     }
     adjacentSquares.Add(GetSquare(square.X + i, square.Y + j));
 }
Ejemplo n.º 3
0
 public Board(int width, int height, int amountOfBombs)
 {
     this.Width         = width;
     this.Height        = height;
     this.amountOfBombs = amountOfBombs;
     squares            = new BoardSquare[width, height];
     wasChecked         = new bool[width, height];
 }
        public void TestGetSquare()
        {
            Board       board      = new Board(9, 9, 0);
            BoardSquare testSquare = new BoardSquare(3, 4);
            BoardSquare square     = board.GetSquare(3, 4);

            square.Should().Equals(testSquare);
        }
Ejemplo n.º 5
0
 private void UpdateSquareImage(BoardSquare square)
 {
     SetButtonImage(square, null);
     UpdateFlagImage(square);
     if (square.isOpen)
     {
         OpenButton(square);
     }
 }
Ejemplo n.º 6
0
 internal void FillBoardSquares()
 {
     for (int width = 0; width < squares.GetLength(0); width++)
     {
         for (int height = 0; height < squares.GetLength(1); height++)
         {
             squares[width, height] = new BoardSquare(width, height);
         }
     }
 }
Ejemplo n.º 7
0
 private void UpdateFlagImage(BoardSquare square)
 {
     if (square.IsFlag)
     {
         SetButtonImage(square, flagImage);
     }
     else
     {
         SetButtonImage(square, null);
     }
 }
Ejemplo n.º 8
0
        private void button_Click(object sender, EventArgs e)
        {
            if (board.gameOver)
            {
                return;
            }
            BoardSquare modelSquare = GetSelectedButton(sender);

            board.ClickSquare(modelSquare);
            UpdateView(modelSquare);
        }
Ejemplo n.º 9
0
 private void UpdateBombCounter(BoardSquare modelSquare)
 {
     if (modelSquare.IsFlag)
     {
         BombsRemaining++;
     }
     else
     {
         BombsRemaining--;
     }
 }
Ejemplo n.º 10
0
 private void UpdateView(BoardSquare selectedSquare)
 {
     if (board.gameOver)
     {
         DisplayGameOver(selectedSquare);
     }
     else
     {
         foreach (var square in SquareList)
         {
             UpdateSquareImage(square);
         }
     }
 }
Ejemplo n.º 11
0
        internal List <BoardSquare> GetAdjacentSquares(BoardSquare square)
        {
            List <BoardSquare> adjacentSquares = new List <BoardSquare>();

            for (int i = -1; i < 2; i++)
            {
                for (int j = -1; j < 2; j++)
                {
                    TryAddAdjacentSquare(square, adjacentSquares, i, j);
                }
            }
            adjacentSquares.Remove(square);
            return(adjacentSquares);
        }
        public void TestCountBombs()
        {
            Board board = new Board(9, 9, 0);
            List <BoardSquare> testSquares = new List <BoardSquare>();
            BoardSquare        bombSquare  = new BoardSquare(0, 0);

            for (int i = 0; i < 5; i++)
            {
                bombSquare.value = BoardSquare.BOMB;
                testSquares.Add(bombSquare);
            }

            testSquares.Add(new BoardSquare(0, 0));
            board.CountBombs(testSquares).Should().Be(5);
        }
Ejemplo n.º 13
0
 private void MinesweeperController_MouseUp(object sender, System.Windows.Forms.MouseEventArgs e)
 {
     if (e.Button == MouseButtons.Right)
     {
         if (board.gameOver)
         {
             return;
         }
         BoardSquare modelSquare = GetSelectedButton(sender);
         UpdateBombCounter(modelSquare);
         ToggleFlag(modelSquare);
         UpdateFlagImage(modelSquare);
         UpdateBombLabel();
     }
 }
Ejemplo n.º 14
0
 internal void ClickSquare(BoardSquare square)
 {
     if (square.IsFlag || square.isOpen)
     {
         return;
     }
     else if (gameOver)
     {
         return;
     }
     else if (square.value == BoardSquare.BOMB)
     {
         GameOver();
     }
     else
     {
         square.isOpen = true;
         OpenZeros(square);
     }
 }
Ejemplo n.º 15
0
 internal void OpenZeros(BoardSquare square)
 {
     if (square.value == 0)
     {
         var nonCheckedButtons = new List <BoardSquare>();
         var adjacentSquares   = GetAdjacentSquares(square);
         foreach (var adjacentSquare in adjacentSquares)
         {
             if (!wasChecked[adjacentSquare.X, adjacentSquare.Y])
             {
                 nonCheckedButtons.Add(adjacentSquare);
             }
             wasChecked[adjacentSquare.X, adjacentSquare.Y] = true;
             if (!adjacentSquare.IsFlag)
             {
                 adjacentSquare.isOpen = true;
             }
         }
         foreach (var nonOpenSquare in nonCheckedButtons)
         {
             OpenZeros(nonOpenSquare);
         }
     }
 }
Ejemplo n.º 16
0
 private void DisplayGameOver(BoardSquare selectedSquare)
 {
     gui.buttonArray[selectedSquare.X, selectedSquare.Y].BackColor = Color.Red;
     RevealBombs();
 }
Ejemplo n.º 17
0
 private void OpenButton(BoardSquare square)
 {
     gui.buttonArray[square.X, square.Y].Text    = square.value.ToString();
     gui.buttonArray[square.X, square.Y].Enabled = false;
 }
Ejemplo n.º 18
0
 private void SetButtonImage(BoardSquare square, Image image)
 {
     gui.buttonArray[square.X, square.Y].Image = image;
 }
Ejemplo n.º 19
0
 private static void ToggleFlag(BoardSquare modelSquare)
 {
     modelSquare.IsFlag = !modelSquare.IsFlag;
 }