/// <summary> /// Generates the game board /// </summary> /// <param name="row"></param> /// <param name="colum"></param> private void Createboard(int row, int column) { //Creates a new tileset size row x column _gameBoard = new BoardTile[row, column]; for (int r = row - 1; r >= 0; r--) { for (int c = column - 1; c >= 0; c--) { BoardTile tile = new BoardTile(r, c); tile.Terrain = SquareTerrain.Grass; if (r == row - 1) { tile.State = SquareStatus.Enemy; tile.Terrain = SquareTerrain.Woods; _enemyUnits++; } else if (r == row - row) { tile.State = SquareStatus.Player; tile.Terrain = SquareTerrain.Woods; _playerUnits++; } else { tile.State = SquareStatus.None; tile.Terrain = SquareTerrain.Grass; } _gameBoard[r, c] = tile; } } }
/// <summary> /// Finds and returns the BoardSquare that corresponds to the given row and column. /// If the found square has the same color as the current Turn, the square should be stored in SelectedPiece. /// Be sure to set the Selected variable of the BoardSquare if this is the case. /// </summary> /// <param name="row">given row passed to identify the dictionary key</param> /// <param name="col">given column to identify the linked list</param> /// <returns></returns> private BoardTile SelectSquare(int row, int col) { BoardTile tile = _gameBoard[row, col]; if (tile.State != SquareStatus.None && tile.State == Turn) { if (SelectedTile != null) { SelectedTile.Selected = false; } SelectedTile = tile; SelectedTile.Selected = true; } return(tile); }
/// <summary> /// This function should iterate over each row of the board and /// update each Label that represents a board square. /// </summary> private void RedrawBoard() { BoardTile currentSquare = null; for (int row = _boardHeight; row >= 0; row--) { for (int column = _boardWidth; column >= 0; column--) { currentSquare = _game.GetTile(row, column); Label square = (Label)uxGameBoard.Controls[currentSquare.Row + "," + currentSquare.Column]; if (currentSquare.Selected) { square.BackColor = Color.Aqua; } else square.Image = FindImage(_game.GetTile(row, column).Unit); } } }
/// <summary> /// This function attempts to make a legal move in the target row/column and returns true if a move is made. /// </summary> /// <param name="targetRow">row of the selected tile</param> /// <param name="targetCol">column of the selected tile</param> /// <returns></returns> public bool MakeMove(int targetRow, int targetCol) { BoardTile target = SelectSquare(targetRow, targetCol); if (SelectedTile == null) { return(false); } if (SelectedTile == target) { return(true); } else if (SelectedTile != null && target.State == SquareStatus.None) { if (SelectedTile.State == SquareStatus.Enemy) { target.State = SelectedTile.State; } SelectedTile.State = SquareStatus.None; SelectedTile.Selected = false; SelectedTile = null; Turn = Turn == SquareStatus.Enemy ? SquareStatus.Enemy : SquareStatus.Player; return(true); } else if (SelectedTile != null && target.State != SquareStatus.None) { BoardTile end; //if(CheckAttack()) return(false); } else { return(false); } }