private void moreSkipComputerMove(int RowSorcue, int colSorcue, out SourceAndTargetMove io_SourceAndTargetMoreMove) { int i_IndexListMove = 0; int i_RowSorcueFromList; int i_ColSorcueFromList; eTypeOfMove i_TypeOfMoveFromList; FillLigalMovesList(); do { i_TypeOfMoveFromList = Players[1].LigalMovesList[i_IndexListMove].TypeOfMove; i_RowSorcueFromList = Players[1].LigalMovesList[i_IndexListMove].RowSorcue; i_ColSorcueFromList = Players[1].LigalMovesList[i_IndexListMove].ColSorcue; i_IndexListMove++; } while ((i_RowSorcueFromList != RowSorcue) || (i_ColSorcueFromList != colSorcue) || (i_TypeOfMoveFromList == eTypeOfMove.RegularMove)); makeMove(i_IndexListMove - 1); io_SourceAndTargetMoreMove = Players[1].LigalMovesList[i_IndexListMove - 1]; if (io_SourceAndTargetMoreMove.TypeOfMove == eTypeOfMove.CanMoreSkip) { moreSkipComputerMove(io_SourceAndTargetMoreMove.RowTarget, io_SourceAndTargetMoreMove.ColTarget, out io_SourceAndTargetMoreMove); } int[] i_Target = { io_SourceAndTargetMoreMove.RowTarget, io_SourceAndTargetMoreMove.ColTarget }; TryCreateKing(i_Target); }
public eTypeOfMove ComputerMove(out SourceAndTargetMove io_SourceAndTargetMove, out SourceAndTargetMove io_MoreSkipMove) { int i_MoveListIndex = 0; int i_MoveListLengh = Players[1].LigalMovesList.Count; int[] i_ArrayTarget = new int[2]; eTypeOfMove i_MoveType; io_MoreSkipMove = null; do { i_MoveType = Players[1].LigalMovesList[i_MoveListIndex].TypeOfMove; i_MoveListIndex++; } while ((i_MoveType != eTypeOfMove.CanMoreSkip) && (i_MoveListIndex < i_MoveListLengh)); if (i_MoveType == eTypeOfMove.CanMoreSkip) { makeMove(i_MoveListIndex - 1); i_ArrayTarget[0] = Players[1].LigalMovesList[i_MoveListIndex - 1].RowTarget; i_ArrayTarget[1] = Players[1].LigalMovesList[i_MoveListIndex - 1].ColTarget; io_SourceAndTargetMove = Players[1].LigalMovesList[i_MoveListIndex - 1]; TryCreateKing(i_ArrayTarget); moreSkipComputerMove(i_ArrayTarget[0], i_ArrayTarget[1], out io_MoreSkipMove); } else { i_MoveListIndex = 0; do { i_MoveType = Players[1].LigalMovesList[i_MoveListIndex].TypeOfMove; i_MoveListIndex++; } while ((i_MoveType != eTypeOfMove.MustToEat) && (i_MoveListIndex < i_MoveListLengh)); if (i_MoveType != eTypeOfMove.MustToEat) { i_MoveType = eTypeOfMove.RegularMove; Random rndom = new Random(); i_MoveListIndex = rndom.Next(0, i_MoveListLengh - 1) + 1; } makeMove(i_MoveListIndex - 1); io_SourceAndTargetMove = Players[1].LigalMovesList[i_MoveListIndex - 1]; i_ArrayTarget[0] = io_SourceAndTargetMove.RowTarget; i_ArrayTarget[1] = io_SourceAndTargetMove.ColTarget; TryCreateKing(i_ArrayTarget); } return(i_MoveType); }