diff --git a/src/main/java/ch/zhaw/pm2/racetrack/Game.java b/src/main/java/ch/zhaw/pm2/racetrack/Game.java index 0ac8d9e..3a55983 100644 --- a/src/main/java/ch/zhaw/pm2/racetrack/Game.java +++ b/src/main/java/ch/zhaw/pm2/racetrack/Game.java @@ -56,64 +56,28 @@ public class Game implements GameSpecification { moveStrategies.add("Move List Strategy"); moveStrategies.add("Path Follow Move Strategy"); moveStrategies.add("Path Finder Move Strategy"); - for (int i = 0; i < track.getCarCount(); i++) { - Car car = track.getCar(i); + for (int carIndex = 0; carIndex < track.getCarCount(); carIndex++) { + Car car = track.getCar(carIndex); MoveStrategy moveStrategy = null; while (moveStrategy == null) { - File selectedFile = null; int moveStrategie = userInterface.selectOption( - "Select Strategy for Car " + i + " (" + track.getCarId(i) + ")", moveStrategies); + "Select Strategy for Car " + carIndex + " (" + track.getCarId(carIndex) + ")", moveStrategies); switch (moveStrategie) { case 0: moveStrategy = new DoNotMoveStrategy(); break; case 1: - moveStrategy = new UserMoveStrategy(userInterface, i, track.getCarId(i)); + moveStrategy = new UserMoveStrategy(userInterface, carIndex, track.getCarId(carIndex)); break; case 2: - for (File file : config.getMoveDirectory().listFiles()) { - if (file.toString().equals(config.getMoveDirectory().toString() + "\\" + selectedTrack.getName().split("\\.")[0] + "-car-" + track.getCar(i).getID() + ".txt")) { - selectedFile = file; - } - } - if (selectedFile != null) { - try { - moveStrategy = new MoveListStrategy(selectedFile); - } catch (FileNotFoundException e) { - userInterface.printInformation("There is no Move-List implemented. Choose another Strategy!"); - e.printStackTrace(); - } catch (InvalidFileFormatException e) { - userInterface.printInformation("Invalid Data in Move-List. Choose another Strategy and clean the File"); - e.printStackTrace(); - } - } else { - userInterface.printInformation("There is no Move-List implemented. Choose another Strategy!"); - } - + moveStrategy = getMoveListStrategy(selectedTrack, carIndex, moveStrategy); break; case 3: - for (File file : config.getFollowerDirectory().listFiles()) { - if (file.toString().equals(config.getFollowerDirectory().toString() + "\\" + selectedTrack.getName().split("\\.")[0] + "_points.txt")) { - selectedFile = file; - } - } - if (selectedFile != null) { - try { - moveStrategy = new PathFollowerMoveStrategy(selectedFile, track.getCarPos(i)); - } catch (FileNotFoundException e) { - e.printStackTrace(); - userInterface.printInformation("There is no Point-List implemented. Choose another Strategy!"); - } catch (InvalidFileFormatException e) { - e.printStackTrace(); - userInterface.printInformation("Invalid Point-List format. Change Strategy and clean Point-List"); - } - } else { - userInterface.printInformation("There is no Point-List implemented. Choose another Strategy!"); - } + moveStrategy = getPathFollowerMoveStrategy(selectedTrack, carIndex, moveStrategy); break; case 4: - moveStrategy = new PathFinderMoveStrategy(track, i); + moveStrategy = new PathFinderMoveStrategy(track, carIndex); break; } } @@ -126,6 +90,52 @@ public class Game implements GameSpecification { } } + private MoveStrategy getPathFollowerMoveStrategy(File selectedTrack, int carIndex, MoveStrategy moveStrategy) { + File selectedFile = null; + for (File file : config.getFollowerDirectory().listFiles()) { + if (file.toString().equals(config.getFollowerDirectory().toString() + "\\" + selectedTrack.getName().split("\\.")[0] + "_points.txt")) { + selectedFile = file; + } + } + if (selectedFile != null) { + try { + moveStrategy = new PathFollowerMoveStrategy(selectedFile, track.getCarPos(carIndex)); + } catch (FileNotFoundException e) { + e.printStackTrace(); + userInterface.printInformation("There is no Point-List implemented. Choose another Strategy!"); + } catch (InvalidFileFormatException e) { + e.printStackTrace(); + userInterface.printInformation("Invalid Point-List format. Change Strategy and clean Point-List"); + } + } else { + userInterface.printInformation("There is no Point-List implemented. Choose another Strategy!"); + } + return moveStrategy; + } + + private MoveStrategy getMoveListStrategy(File selectedTrack, int carIndex, MoveStrategy moveStrategy) { + File selectedFile = null; + for (File file : config.getMoveDirectory().listFiles()) { + if (file.toString().equals(config.getMoveDirectory().toString() + "\\" + selectedTrack.getName().split("\\.")[0] + "-car-" + track.getCar(carIndex).getID() + ".txt")) { + selectedFile = file; + } + } + if (selectedFile != null) { + try { + moveStrategy = new MoveListStrategy(selectedFile); + } catch (FileNotFoundException e) { + userInterface.printInformation("There is no Move-List implemented. Choose another Strategy!"); + e.printStackTrace(); + } catch (InvalidFileFormatException e) { + userInterface.printInformation("Invalid Data in Move-List. Choose another Strategy and clean the File"); + e.printStackTrace(); + } + } else { + userInterface.printInformation("There is no Move-List implemented. Choose another Strategy!"); + } + return moveStrategy; + } + /** * The functionality was taken out of init to automate testing *