private List <BoardSquare> FillSquareValue(BoardSquare square) { var adjacentSquares = GetAdjacentSquares(square); square.value = CountBombs(adjacentSquares); return(adjacentSquares); }
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)); }
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); }
private void UpdateSquareImage(BoardSquare square) { SetButtonImage(square, null); UpdateFlagImage(square); if (square.isOpen) { OpenButton(square); } }
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); } } }
private void UpdateFlagImage(BoardSquare square) { if (square.IsFlag) { SetButtonImage(square, flagImage); } else { SetButtonImage(square, null); } }
private void button_Click(object sender, EventArgs e) { if (board.gameOver) { return; } BoardSquare modelSquare = GetSelectedButton(sender); board.ClickSquare(modelSquare); UpdateView(modelSquare); }
private void UpdateBombCounter(BoardSquare modelSquare) { if (modelSquare.IsFlag) { BombsRemaining++; } else { BombsRemaining--; } }
private void UpdateView(BoardSquare selectedSquare) { if (board.gameOver) { DisplayGameOver(selectedSquare); } else { foreach (var square in SquareList) { UpdateSquareImage(square); } } }
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); }
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(); } }
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); } }
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); } } }
private void DisplayGameOver(BoardSquare selectedSquare) { gui.buttonArray[selectedSquare.X, selectedSquare.Y].BackColor = Color.Red; RevealBombs(); }
private void OpenButton(BoardSquare square) { gui.buttonArray[square.X, square.Y].Text = square.value.ToString(); gui.buttonArray[square.X, square.Y].Enabled = false; }
private void SetButtonImage(BoardSquare square, Image image) { gui.buttonArray[square.X, square.Y].Image = image; }
private static void ToggleFlag(BoardSquare modelSquare) { modelSquare.IsFlag = !modelSquare.IsFlag; }