protected virtual void OnGameMove(Location i_DestnationCell, eCheckerType i_Checker) { if (GameMove != null) { GameMove.Invoke(i_DestnationCell, i_Checker); } }
private void GameMove_CheckerWasMoved(Location i_LocateThatChange, eCheckerType i_ChangeToThisType) { Image newImageToButton; switch (i_ChangeToThisType) { default: case eCheckerType.EmptyCell: newImageToButton = null; break; case eCheckerType.X: newImageToButton = RedPawnImage; break; case eCheckerType.O: newImageToButton = BlackPawnImage; break; case eCheckerType.U: newImageToButton = BlackKingImage; break; case eCheckerType.K: newImageToButton = RedKingImage; break; } m_GameBoard.ChangeCheckerTypeOnButton(i_LocateThatChange, newImageToButton); }
public Checker(ePlayerColor i_Color, SquarePosition i_Position, eCheckerType i_Type = eCheckerType.Soldier) { m_Type = i_Type; m_Color = i_Color; m_Position = i_Position; m_PossibleMoves = new List <Move>(4); // maximum possible moves for one checker (when king) }
public void FillBoard(int i_StartRow, int i_EndRow, eCheckerType i_Value) { int j; for (int i = i_StartRow; i < i_EndRow; i++) { if (i % 2 == 0) { j = 1; } else { j = 0; } for (; j < m_Size; j += 2) { m_Matrix[i, j] = i_Value; } } }
private static List <Position> getPosibleMoves(int row, int col, eUserTurn i_CurrentTurn, eCheckerType?[,] i_Board) { List <Position> posibleMoves = new List <Position>(); eCheckerType currentChecker = (eCheckerType)i_Board[row, col]; if (currentChecker == eCheckerType.Team1_Man || currentChecker == eCheckerType.Team1_King || currentChecker == eCheckerType.Team2_King) { diagonallyUpLeft(row, col, i_Board, ref posibleMoves); diagonallyUpRight(row, col, i_Board, ref posibleMoves); } if (currentChecker == eCheckerType.Team2_Man || currentChecker == eCheckerType.Team2_King || currentChecker == eCheckerType.Team1_King) { diagonallyDownLeft(row, col, i_Board, ref posibleMoves); diagonallyDownRight(row, col, i_Board, ref posibleMoves); } return(posibleMoves); }
internal Checker(Player i_CurrentPlayer, eCheckerType i_CheckerType) { m_Player = i_CurrentPlayer; m_CheckerType = i_CheckerType; }
internal Checker(eCheckerType i_CheckerType, Player i_Player) { m_CheckerType = i_CheckerType; m_Player = i_Player; }
public bool DoMove(string i_Move, Board i_Board, bool i_IsFirstMoveForChecker) { bool aMoveWasMade = false; bool aDoubleMoveWasMade = false; Board.BoardCell sourceCell, destinationCell; int sourceCellX, sourceCellY, destinationCellX, destinationCellY; sourceCellX = Convert.ToInt32(i_Move[0]) - 65; sourceCellY = Convert.ToInt32(i_Move[1]) - 97; destinationCellX = Convert.ToInt32(i_Move[3]) - 65; destinationCellY = Convert.ToInt32(i_Move[4]) - 97; eCheckerType checker = eCheckerType.EmptyCell; if (ValidationProcess.IsLegalMoveFormat(i_Move, i_Board.BoardSize)) { sourceCell = i_Board.BoardArray[sourceCellY, sourceCellX]; destinationCell = i_Board.BoardArray[destinationCellY, destinationCellX]; if (ValidationProcess.IsLegalMove(sourceCell, destinationCell, i_Board, Player1.MyTurn ? Player2.Name : Player1.Name)) { aMoveWasMade = true; destinationCell.Checker = sourceCell.Checker; destinationCell.Checker.Player.Name = sourceCell.Checker.Player.Name; checker = sourceCell.Checker.CheckerType; sourceCell.Checker = null; if (Math.Abs(destinationCellY - sourceCellY) == 2) { //eating down if (destinationCellY - sourceCellY == 2) { //eating down & right if (destinationCellX - sourceCellX == 2) { i_Board.BoardArray[sourceCellY + 1, sourceCellX + 1].Checker.Player.NumOfCheckersAlive--; i_Board.BoardArray[sourceCellY + 1, sourceCellX + 1].Checker = null; OnEatChecker(new Location(sourceCellY + 1, sourceCellX + 1)); } //eating down & left else { i_Board.BoardArray[sourceCellY + 1, sourceCellX - 1].Checker.Player.NumOfCheckersAlive--; i_Board.BoardArray[sourceCellY + 1, sourceCellX - 1].Checker = null; OnEatChecker(new Location(sourceCellY + 1, sourceCellX - 1)); } string nextMoveDownAndRight = "" + i_Move[3] + i_Move[4] + ">" + char.ConvertFromUtf32(Convert.ToInt32(i_Move[3]) + 2) + char.ConvertFromUtf32(Convert.ToInt32(i_Move[4]) + 2); aDoubleMoveWasMade = DoMove(nextMoveDownAndRight, i_Board, false); if (aDoubleMoveWasMade) { OnDoubleEat(nextMoveDownAndRight); } string nextMoveDownAndLeft = "" + i_Move[3] + i_Move[4] + ">" + char.ConvertFromUtf32(Convert.ToInt32(i_Move[3]) - 2) + char.ConvertFromUtf32(Convert.ToInt32(i_Move[4]) + 2); aDoubleMoveWasMade = DoMove(nextMoveDownAndLeft, i_Board, false); if (aDoubleMoveWasMade) { OnDoubleEat(nextMoveDownAndLeft); } } //eating up else { //eating up & right if (destinationCellX - sourceCellX == 2) { i_Board.BoardArray[sourceCellY - 1, sourceCellX + 1].Checker.Player.NumOfCheckersAlive--; i_Board.BoardArray[sourceCellY - 1, sourceCellX + 1].Checker = null; OnEatChecker(new Location(sourceCellY - 1, sourceCellX + 1)); } //eating up & left else { i_Board.BoardArray[sourceCellY - 1, sourceCellX - 1].Checker.Player.NumOfCheckersAlive--; i_Board.BoardArray[sourceCellY - 1, sourceCellX - 1].Checker = null; OnEatChecker(new Location(sourceCellY - 1, sourceCellX - 1)); } string nextMoveUpAndRight = "" + i_Move[3] + i_Move[4] + ">" + char.ConvertFromUtf32(Convert.ToInt32(i_Move[3]) + 2) + char.ConvertFromUtf32(Convert.ToInt32(i_Move[4]) - 2); aDoubleMoveWasMade = DoMove(nextMoveUpAndRight, i_Board, false); if (aDoubleMoveWasMade) { OnDoubleEat(nextMoveUpAndRight); } string nextMoveUpAndLeft = "" + i_Move[3] + i_Move[4] + ">" + char.ConvertFromUtf32(Convert.ToInt32(i_Move[3]) - 2) + char.ConvertFromUtf32(Convert.ToInt32(i_Move[4]) - 2); aDoubleMoveWasMade = DoMove(nextMoveUpAndLeft, i_Board, false); if (aDoubleMoveWasMade) { OnDoubleEat(nextMoveUpAndLeft); } } } } } Location destnationLocation = new Location(destinationCellY, destinationCellX); if (aMoveWasMade) { OnGameMove(destnationLocation, checker); } return(aMoveWasMade); }