public eTypeOfMove DoMove(Point i_SourcePoint, Point i_TargetPoint) { eTypeOfMove i_MoveType = eTypeOfMove.IllegalMove; int[] i_Source = { i_SourcePoint.X, i_SourcePoint.Y }; int[] i_Target = { i_TargetPoint.X, i_TargetPoint.Y }; eCoinSign i_CoinSign = GameBoard.Matrix[i_Source[0], i_Source[1]].Sign; if (i_CoinSign == eCoinSign.PlayerX) { i_MoveType = moveDownToUp(i_Source, i_Target); } else if (i_CoinSign == eCoinSign.PlayerO) { i_MoveType = moveUpToDown(i_Source, i_Target); } else if ((i_CoinSign == eCoinSign.PlayerOKing) || (i_CoinSign == eCoinSign.PlayerXKing)) { if (i_Source[0] > i_Target[0]) { i_MoveType = moveDownToUp(i_Source, i_Target); } else { i_MoveType = moveUpToDown(i_Source, i_Target); } } return(i_MoveType); }
public SourceAndTargetMove(int m_RowSorcue, int m_ColSorcue, int m_RowTarget, int m_ColTarget, int m_RowEaten, int m_ColEaten, eTypeOfMove m_TypeOfMove) { this.m_RowSorcue = m_RowSorcue; this.m_ColSorcue = m_ColSorcue; this.m_RowTarget = m_RowTarget; this.m_ColTarget = m_ColTarget; this.m_RowEaten = m_RowEaten; this.m_ColEaten = m_ColEaten; this.m_TypeOfMove = m_TypeOfMove; }
internal static void PrintErrorOfMove(eTypeOfMove i_ExpectedTypeOfMove) { switch (i_ExpectedTypeOfMove) { case eTypeOfMove.Jump: Console.WriteLine("Invalid move! You must take a jump"); break; case eTypeOfMove.Regular: Console.WriteLine("Invalid move! please take a valid one"); break; } }
private void fillMustEatMovesListUpToDown(int i_RowSource, int i_ColSource) { eOwner i_CurOwner = GameBoard.Matrix[i_RowSource, i_ColSource].Owner; eTypeOfMove i_MoveType = eTypeOfMove.MustToEat; eCoinSign i_CoinSign = GameBoard.Matrix[i_RowSource, i_ColSource].Sign; if (checkIfMustToEatUpToDownRight(i_CurOwner, i_RowSource, i_ColSource)) { i_MoveType = checkIfMustToEatDownToUp(i_CurOwner, i_RowSource + 2, i_ColSource + 2) || checkIfMustToEatUpToDown(i_CurOwner, i_RowSource + 2, i_ColSource + 2) ? eTypeOfMove.CanMoreSkip : eTypeOfMove.MustToEat; Players[1].LigalMovesList.Add(new SourceAndTargetMove(i_RowSource, i_ColSource, i_RowSource + 2, i_ColSource + 2, i_RowSource + 1, i_ColSource + 1, i_MoveType)); } if (checkIfMustToEatUpToDownLeft(i_CurOwner, i_RowSource, i_ColSource)) { i_MoveType = checkIfMustToEatDownToUp(i_CurOwner, i_RowSource + 2, i_ColSource - 2) || checkIfMustToEatUpToDown(i_CurOwner, i_RowSource + 2, i_ColSource - 2) ? eTypeOfMove.CanMoreSkip : eTypeOfMove.MustToEat; Players[1].LigalMovesList.Add(new SourceAndTargetMove(i_RowSource, i_ColSource, i_RowSource + 2, i_ColSource - 2, i_RowSource + 1, i_ColSource - 1, i_MoveType)); } }
private eTypeOfMove eatAndUpdateCellMoveDownToUp(eTypeOfMove i_MoveType, int[] i_Source, int[] i_Terget, int i_ColSource) { resetCell(i_Source[0] - 1, i_ColSource); updateSourceAndTargetCells(i_Source, i_Terget); eCoinSign i_CurrentPlayer = GameBoard.Matrix[i_Terget[0], i_Terget[1]].Sign; eOwner i_CurrentOwner = GameBoard.Matrix[i_Terget[0], i_Terget[1]].Owner; if (i_CurrentPlayer == eCoinSign.PlayerX) { i_MoveType = checkIfMustToEatDownToUp(i_CurrentOwner, i_Terget[0], i_Terget[1]) ? eTypeOfMove.CanMoreSkip : eTypeOfMove.SkipMove; } if ((i_CurrentPlayer == eCoinSign.PlayerXKing) || (i_CurrentPlayer == eCoinSign.PlayerOKing)) { i_MoveType = checkIfMustToEatUpToDown(i_CurrentOwner, i_Terget[0], i_Terget[1]) || checkIfMustToEatDownToUp(i_CurrentOwner, i_Terget[0], i_Terget[1]) ? eTypeOfMove.CanMoreSkip : eTypeOfMove.SkipMove; } return(i_MoveType); }
private eTypeOfMove moveUpToDown(int[] i_Source, int[] i_Terget) { eTypeOfMove i_MoveType = eTypeOfMove.IllegalMove; eOwner i_CurPlayerOwner = GameBoard.Matrix[i_Source[0], i_Source[1]].Owner; if ((i_Terget[0] - 1 == i_Source[0]) && ((i_Source[1] == i_Terget[1] + 1) || (i_Source[1] == i_Terget[1] - 1))) { if (checkIfMustToEat(i_CurPlayerOwner)) { i_MoveType = eTypeOfMove.MustToEat; } else { i_MoveType = eTypeOfMove.RegularMove; updateSourceAndTargetCells(i_Source, i_Terget); } } else if ((i_Terget[0] - 2 == i_Source[0]) && (i_Source[1] == i_Terget[1] - 2)) { eOwner i_EatenOwner = GameBoard.Matrix[(i_Source[0] + 1), (i_Source[1] + 1)].Owner; if ((i_EatenOwner != i_CurPlayerOwner) && (i_EatenOwner != eOwner.None)) { i_MoveType = eatAndUpdateCellMoveUpToDown(i_MoveType, i_Source, i_Terget, i_Source[1] + 1); } } else if ((i_Terget[0] - 2 == i_Source[0]) && (i_Source[1] == i_Terget[1] + 2)) { eOwner i_EatenOwner = GameBoard.Matrix[(i_Source[0] + 1), (i_Source[1] - 1)].Owner; if ((i_EatenOwner != i_CurPlayerOwner) && (i_EatenOwner != eOwner.None)) { i_MoveType = eatAndUpdateCellMoveUpToDown(i_MoveType, i_Source, i_Terget, i_Source[1] - 1); } } return(i_MoveType); }
public Move(Square m_FromPiece, Square m_ToPiece) { this.m_FromSquare = m_FromPiece; this.m_ToSquare = m_ToPiece; this.m_TypeOfMove = eTypeOfMove.Regular; }