public static void execScenario(Board board, MoveScenarios scenarios, int scenarioIndex) { List <Position> moves = new List <Position>(); moves.Add(scenarios.getFromPosition()); moves.AddRange(scenarios.getScenario(scenarioIndex)); Position lastPosition = moves[moves.Count - 1]; board.move(scenarios.getFromPosition(), lastPosition); if (board.isTurnToDame(lastPosition)) { board.turnToDame(lastPosition); } Direction direction; Position currPos; for (int i = 0; i < moves.Count - 1; i++) { direction = Direction.getDirection(moves[i], moves[i + 1]); currPos = new Position(moves[i]); currPos.move(direction); while (!currPos.Equals(moves[i + 1])) { if (!Board.isEmpty(board.getPiece(currPos))) { board.removePiece(currPos); } currPos.move(direction); } } board.switchCurrentColor(); }
public void deletePlayerMove(Position toMovePos) { if (currMoveScenarios == null) { return; } if (toMovePos.Equals(currMoveScenarios.getFromPosition())) { currMoveScenarios = null; currMoveIndex = 0; } else { int i = 0; foreach (Position p in currMoveScenarios.getScenario(0)) { if (!p.Equals(toMovePos)) { break; } i++; } currMoveIndex = currMoveIndex - i - 1; if (currMoveIndex == -1) { currMoveScenarios = allMoveScenarios; currMoveIndex = 0; } else { Position currPos = currMoveScenarios.getScenario(0)[currMoveIndex]; currMoveScenarios = allMoveScenarios.getMatchScenarios(currPos, currMoveIndex); } } }