/* * Return true if move is end */ public bool execPlayerMove(Board board, Position movePos) { if (currMoveScenarios == null) { allMoveScenarios = moveFinder.getMoveScenarios(board, movePos); currMoveScenarios = allMoveScenarios; currMoveIndex = 0; } else { currMoveScenarios = currMoveScenarios.getMatchScenarios(movePos, currMoveIndex); currMoveIndex++; if (currMoveScenarios.Count() == 1 && currMoveScenarios.getScenario(0).Count == currMoveIndex) { execScenario(board, currMoveScenarios, 0); currMoveScenarios = null; return(true); } } return(false); }
public List <MoveScenarios> getAllowMoveScenarios(Board board, int color) { List <MoveScenarios> allMoveScenarios = new List <MoveScenarios>(); List <MoveScenarios> allCaptureScenarios = new List <MoveScenarios>(); List <Position> piecePositions = board.getPiecePositions(color); foreach (Position currPosition in piecePositions) { MoveScenarios captureScenarios = getAllCaptureScenarios(board, currPosition); if (captureScenarios != null) { allCaptureScenarios.Add(captureScenarios); } else { MoveScenarios moveScenarios = getAllMoveScenarios(board, currPosition); if (moveScenarios.Count() > 0) { allMoveScenarios.Add(moveScenarios); } } } if (allCaptureScenarios.Count > 0) { return(allCaptureScenarios); } return(allMoveScenarios); }
public Position getCurrMovesInfo() { if (currMoveScenarios != null) { if (currMoveScenarios.isCapture()) { return(new Position(0, currMoveScenarios.Count())); } else { return(new Position(currMoveScenarios.Count(), 0)); } } return(null); }