Der Backtracking Algorithmus ist fertig

 @Override
 public List<int[]> moveUnit(Unit pUnit, int pColumn, int pRow) {
  movementPath = new ArrayList<int[]>();
  addPathPoint(new ArrayList<int[]>(), pUnit.getColumn(), pUnit.getRow(),
    pColumn, pRow, pUnit.getMaxMovementRange());
  movementPath.remove(0);
  return movementPath;
 }

 private void addPathPoint(List<int[]> pPath, int pColumn, int pRow,
   int pTargetColumn, int pTargetRow, int pStepsLeft) {
  pPath.add(new int[] { pColumn, pRow });
  if (pColumn == pTargetColumn && pTargetRow == pRow) {
   movementPath = new ArrayList<int[]>();
   movementPath.addAll(pPath);
  } else if (pStepsLeft > 0) {
   for (Cell lCell : getCellsAround(getCellControl().getCell(pColumn,
     pRow))) {
    int[] lCellCoordinates = getCellControl().getCellCoordinates(
      lCell);
    addPathPoint(pPath, lCellCoordinates[0], lCellCoordinates[1],
      pTargetColumn, pTargetRow,
      pStepsLeft - lCell.getMovementModifier());
   }
  }
  pPath.remove(pPath.size() - 1);
 }