diff --git a/Klassendiagramm.drawio b/Klassendiagramm.drawio index 987ce13..4263a6f 100644 --- a/Klassendiagramm.drawio +++ b/Klassendiagramm.drawio @@ -1 +1 @@ -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 \ No newline at end of file +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 \ No newline at end of file diff --git a/src/main/java/ch/zhaw/pm2/racetrack/Game.java b/src/main/java/ch/zhaw/pm2/racetrack/Game.java index 7530831..80f8eb7 100644 --- a/src/main/java/ch/zhaw/pm2/racetrack/Game.java +++ b/src/main/java/ch/zhaw/pm2/racetrack/Game.java @@ -271,7 +271,6 @@ public class Game implements GameSpecification { currentCarIndex++; } } while (track.getCar(currentCarIndex).isCrashed()); - // TODO: evtl andere Kapselung } /** diff --git a/src/main/java/ch/zhaw/pm2/racetrack/Track.java b/src/main/java/ch/zhaw/pm2/racetrack/Track.java index 0be8237..f0f6fdb 100644 --- a/src/main/java/ch/zhaw/pm2/racetrack/Track.java +++ b/src/main/java/ch/zhaw/pm2/racetrack/Track.java @@ -123,7 +123,6 @@ public class Track implements TrackSpecification { } } - //TODO: THIS /** * Determines the finish line and saves it in a list, throws an Exception if none is found. diff --git a/src/main/java/ch/zhaw/pm2/racetrack/strategy/DoNotMoveStrategy.java b/src/main/java/ch/zhaw/pm2/racetrack/strategy/DoNotMoveStrategy.java index 62e15e3..ecfe157 100644 --- a/src/main/java/ch/zhaw/pm2/racetrack/strategy/DoNotMoveStrategy.java +++ b/src/main/java/ch/zhaw/pm2/racetrack/strategy/DoNotMoveStrategy.java @@ -5,10 +5,14 @@ import ch.zhaw.pm2.racetrack.PositionVector; import static ch.zhaw.pm2.racetrack.PositionVector.Direction; /** - * Do not accelerate in any direction. + * This Class represents the DoNotMoveStrategy. */ public class DoNotMoveStrategy implements MoveStrategy { + /** + * This method will be used to return the next Direction for the car. + * @return a NONE Direction + */ @Override public Direction nextMove() { return PositionVector.Direction.NONE; diff --git a/src/main/java/ch/zhaw/pm2/racetrack/strategy/MoveListStrategy.java b/src/main/java/ch/zhaw/pm2/racetrack/strategy/MoveListStrategy.java index 4966184..fdf14dd 100644 --- a/src/main/java/ch/zhaw/pm2/racetrack/strategy/MoveListStrategy.java +++ b/src/main/java/ch/zhaw/pm2/racetrack/strategy/MoveListStrategy.java @@ -10,6 +10,11 @@ import java.util.ArrayList; import java.util.List; import java.util.Scanner; +/** + * This Class represent the MoveListStrategy. The Directions returned by the + * nextMove() are written down in a List. + * + */ public class MoveListStrategy implements MoveStrategy { private final List moveList; @@ -21,6 +26,12 @@ public class MoveListStrategy implements MoveStrategy { readFile(new File(path)); } + /** + * This Method will read in a File and checks line by line if the file contains a valid direction. + * If so the direction will be added to the moveList. + * @param trackFile the file to read in the directions + * @throws FileNotFoundException if the file does not exist. + */ private void readFile(File trackFile) throws FileNotFoundException { Scanner scanner = new Scanner(new FileInputStream(trackFile), StandardCharsets.UTF_8); Direction[] directions = Direction.values(); @@ -35,6 +46,10 @@ public class MoveListStrategy implements MoveStrategy { } } + /** + * This method will be used to return the next Direction for the car. + * @return the next direction from the list. Returns null if the list is empty. + */ @Override public Direction nextMove() { pointer += 1; diff --git a/src/main/java/ch/zhaw/pm2/racetrack/strategy/PathFinderMoveStrategy.java b/src/main/java/ch/zhaw/pm2/racetrack/strategy/PathFinderMoveStrategy.java index 4148124..2b42b5b 100644 --- a/src/main/java/ch/zhaw/pm2/racetrack/strategy/PathFinderMoveStrategy.java +++ b/src/main/java/ch/zhaw/pm2/racetrack/strategy/PathFinderMoveStrategy.java @@ -141,7 +141,7 @@ public class PathFinderMoveStrategy implements MoveStrategy{ @Override - public PositionVector.Direction nextMove() { //TODO check for crash and recreate movelist if crash + public PositionVector.Direction nextMove() { pointer += 1; if (pointer < moveList.size()) { PositionVector.Direction direction = moveList.get(pointer); diff --git a/src/main/java/ch/zhaw/pm2/racetrack/strategy/UserMoveStrategy.java b/src/main/java/ch/zhaw/pm2/racetrack/strategy/UserMoveStrategy.java index d0755aa..a75b4fb 100644 --- a/src/main/java/ch/zhaw/pm2/racetrack/strategy/UserMoveStrategy.java +++ b/src/main/java/ch/zhaw/pm2/racetrack/strategy/UserMoveStrategy.java @@ -5,6 +5,7 @@ import ch.zhaw.pm2.racetrack.UserInterface; /** * Let the user decide the next move. + * Therefore it uses the UserInterface class to ask for a direction. */ public class UserMoveStrategy implements MoveStrategy { private final UserInterface userInterface; diff --git a/src/test/java/ch/zhaw/pm2/racetrack/GameTest.java b/src/test/java/ch/zhaw/pm2/racetrack/GameTest.java index 2156708..c8810f6 100644 --- a/src/test/java/ch/zhaw/pm2/racetrack/GameTest.java +++ b/src/test/java/ch/zhaw/pm2/racetrack/GameTest.java @@ -1,11 +1,8 @@ package ch.zhaw.pm2.racetrack; import ch.zhaw.pm2.racetrack.strategy.UserMoveStrategy; -import org.junit.jupiter.api.Nested; -import org.junit.jupiter.api.DisplayName; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.*; + import java.io.File; import java.io.FileNotFoundException; import java.util.List; @@ -14,7 +11,7 @@ import static ch.zhaw.pm2.racetrack.PositionVector.Direction.*; /** - * Test for Class Game + * Test for Class Game. The Class is split up in nested classes. */ class GameTest { private UserInterface userInterface; @@ -26,7 +23,7 @@ class GameTest { private final int CAR_INDEX_TWO = 1; /** - * This nested Class tests if the game gets initiatet correctly + * This nested Class tests if the game gets initiatet correctly. */ @Nested @DisplayName("Test correct Setup") @@ -124,7 +121,8 @@ class GameTest { } /** - * This nested Class tests a Playtrough. And implements a UserInterface interagtion to pretend a real player + * This nested Class tests a playtrough and implements a userInterface which pretends to be a real player. + * At the end of every Test the Userinterface stays open for 10 more sec to visualize the game. */ @Nested @DisplayName("Playtrough") @@ -183,8 +181,28 @@ class GameTest { Assertions.assertEquals("b",game.gamePhase()); } + @Test + void passFinishLineInWrongDirection() { + game = new Game(new interFace("Test",new Integer[]{1,0,1},new PositionVector.Direction[]{LEFT,NONE,NONE,RIGHT,RIGHT})); + game.initPhase(); + Assertions.assertEquals("a",game.gamePhase()); + } + + @AfterEach + void cleanUp() { + try { + Thread.sleep(10000); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } + } + /** + * This Class is used to communicate with the UserInterface. It overrides crucial methods and returns an instruction based on the instructions data field. + * To implement the right instructions the user has to be aware of the game sequence. + */ private class interFace extends UserInterface { private PositionVector.Direction[] directions; @@ -210,9 +228,6 @@ class GameTest { public void printInformation(String text) { } - public void printTrack(Track track) { - } - public void quit(String text) { }