diff --git a/Klassendiagramm.drawio b/Klassendiagramm.drawio
index 99e08e5..987ce13 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 11e03d1..b7715fa 100644
--- a/src/main/java/ch/zhaw/pm2/racetrack/Game.java
+++ b/src/main/java/ch/zhaw/pm2/racetrack/Game.java
@@ -203,7 +203,7 @@ public class Game implements GameSpecification {
* for this turn
*/
@Override
- public void doCarTurn(Direction acceleration) throws PositionVectorNotValidException {
+ public void doCarTurn(Direction acceleration) {
track.getCar(currentCarIndex).accelerate(acceleration);
PositionVector crashPosition = null;
List positionList = calculatePath(track.getCarPos(currentCarIndex), track.getCar(currentCarIndex).nextPosition());
@@ -239,12 +239,7 @@ public class Game implements GameSpecification {
track.getCar(currentCarIndex).setMoveStrategy(new DoNotMoveStrategy());
direction = track.getCar(currentCarIndex).getMoveStrategy().nextMove();
}
- try {
- doCarTurn(direction);
- } catch (PositionVectorNotValidException e) {
- e.printStackTrace();
- userInterface.printInformation("There has been an unexpected Error. It seems that the trackfile is not Valid. Please do only use the given trackfiles. Otherwise please check that your selfmade tracks have borders arround the track.");
- }
+ doCarTurn(direction);
switchToNextActiveCar();
}
userInterface.printTrack(track);
@@ -295,7 +290,6 @@ public class Game implements GameSpecification {
* If the car is passing the finishline in the correct direction, the car will gain a winpoint.
* @param start the startposition of the car
* @param finish the expected finishpositon of the car after the move
- * @param carIndex of the current player.
*/
private void calculateWinner(PositionVector start, PositionVector finish, int carIndex) {
List path = calculatePath(start, finish);
@@ -342,7 +336,7 @@ public class Game implements GameSpecification {
* @return A boolean indicator if the car would crash with a WALL or another car.
*/
@Override
- public boolean willCarCrash(int carIndex, PositionVector position) throws PositionVectorNotValidException {
+ public boolean willCarCrash(int carIndex, PositionVector position) {
return track.willCrashAtPosition(carIndex, position);
}
diff --git a/src/main/java/ch/zhaw/pm2/racetrack/PositionVectorNotValidException.java b/src/main/java/ch/zhaw/pm2/racetrack/PositionVectorNotValidException.java
deleted file mode 100644
index e3d75b2..0000000
--- a/src/main/java/ch/zhaw/pm2/racetrack/PositionVectorNotValidException.java
+++ /dev/null
@@ -1,9 +0,0 @@
-package ch.zhaw.pm2.racetrack;
-
-public class PositionVectorNotValidException extends Throwable {
- public PositionVectorNotValidException(String message) {
- super(message);
- }
-
- public PositionVectorNotValidException() {}
-}
diff --git a/src/main/java/ch/zhaw/pm2/racetrack/Track.java b/src/main/java/ch/zhaw/pm2/racetrack/Track.java
index b3c9d5d..63db2db 100644
--- a/src/main/java/ch/zhaw/pm2/racetrack/Track.java
+++ b/src/main/java/ch/zhaw/pm2/racetrack/Track.java
@@ -124,8 +124,8 @@ public class Track implements TrackSpecification {
}
//TODO: THIS
+
/**
- *
* @throws InvalidTrackFormatException
*/
private void findFinish() throws InvalidTrackFormatException {
@@ -182,22 +182,6 @@ public class Track implements TrackSpecification {
track.remove(positionVector.getY());
track.add(positionVector.getY(), line);
}
- //TODO: check if this method is okay and needed
-
- /**
- * Determines if a location is valid PositionVector inside the track
- *
- * @param positionVector of location that has to be checked
- * @throws PositionVectorNotValidException if the PositionVector does not lie on the track.
- */
- private void isPositionVectorOnTrack(PositionVector positionVector) throws PositionVectorNotValidException {
- try {
- track.get(positionVector.getY()).charAt(positionVector.getX());
- } catch (IndexOutOfBoundsException e) {
- throw new PositionVectorNotValidException();
- }
- }
-
/**
* Method that returns the finishline as a List
@@ -257,8 +241,7 @@ public class Track implements TrackSpecification {
* @param positionVector the position to check if the car would crash
* @return true if crash otherwise false
*/
- public boolean willCrashAtPosition(int carIndex, PositionVector positionVector) throws PositionVectorNotValidException {
- isPositionVectorOnTrack(positionVector); //TODO: remove this line? Or Method?
+ public boolean willCrashAtPosition(int carIndex, PositionVector positionVector) {
char charAtPosition = track.get(positionVector.getY()).charAt(positionVector.getX());
if (getCarId(carIndex) == charAtPosition) return false;
return !(charAtPosition == ConfigSpecification.SpaceType.TRACK.value ||
@@ -274,8 +257,7 @@ public class Track implements TrackSpecification {
* @param carIndex of car that will be marked as crashed
* @param crashPositionVector of the location of the crash
*/
- public void carDoesCrash(int carIndex, PositionVector crashPositionVector) throws PositionVectorNotValid {
- isPositionVectorOnTrack(crashPositionVector); //TODO: remove this line? and Method?
+ public void carDoesCrash(int carIndex, PositionVector crashPositionVector) {
PositionVector currentCarPosition = getCarPos(carIndex);
drawCharOnTrackIndicator(new PositionVector(currentCarPosition.getX(), currentCarPosition.getY()), ConfigSpecification.SpaceType.TRACK.getValue());
Car car = cars.get(carIndex);
@@ -289,7 +271,7 @@ public class Track implements TrackSpecification {
* If the location is outside the track bounds, it is considered a wall.
*
* @param position The coordinates of the position to examine
- * @return The type of space at the desired position
+ * @return The type of track position at the given location
*/
@Override
public Config.SpaceType getSpaceType(PositionVector position) {
@@ -302,7 +284,7 @@ public class Track implements TrackSpecification {
}
}
- return null;
+ return ConfigSpecification.SpaceType.WALL;
}
/**
diff --git a/src/main/java/ch/zhaw/pm2/racetrack/UserInterface.java b/src/main/java/ch/zhaw/pm2/racetrack/UserInterface.java
index b6c9e02..3ef450a 100644
--- a/src/main/java/ch/zhaw/pm2/racetrack/UserInterface.java
+++ b/src/main/java/ch/zhaw/pm2/racetrack/UserInterface.java
@@ -25,7 +25,6 @@ public class UserInterface {
public UserInterface(String welcomeText) {
textIO = TextIoFactory.getTextIO();
textTerminal = textIO.getTextTerminal();
-
textTerminal.println(welcomeText + "\n");
}
diff --git a/src/main/java/ch/zhaw/pm2/racetrack/given/GameSpecification.java b/src/main/java/ch/zhaw/pm2/racetrack/given/GameSpecification.java
index 4810ad1..3596335 100644
--- a/src/main/java/ch/zhaw/pm2/racetrack/given/GameSpecification.java
+++ b/src/main/java/ch/zhaw/pm2/racetrack/given/GameSpecification.java
@@ -1,7 +1,6 @@
package ch.zhaw.pm2.racetrack.given;
import ch.zhaw.pm2.racetrack.PositionVector;
-import ch.zhaw.pm2.racetrack.PositionVectorNotValidException;
import java.util.List;
@@ -19,11 +18,11 @@ public interface GameSpecification {
int getWinner();
- void doCarTurn(PositionVector.Direction acceleration) throws PositionVectorNotValidException;
+ void doCarTurn(PositionVector.Direction acceleration);
void switchToNextActiveCar();
List calculatePath(PositionVector startPosition, PositionVector endPosition);
- boolean willCarCrash(int carIndex, PositionVector position) throws PositionVectorNotValidException;
+ boolean willCarCrash(int carIndex, PositionVector position);
}
diff --git a/src/test/java/ch/zhaw/pm2/racetrack/GameTest.java b/src/test/java/ch/zhaw/pm2/racetrack/GameTest.java
index a956fac..77b9148 100644
--- a/src/test/java/ch/zhaw/pm2/racetrack/GameTest.java
+++ b/src/test/java/ch/zhaw/pm2/racetrack/GameTest.java
@@ -112,22 +112,14 @@ class GameTest {
@Test
void carTurnCorrect() {
- try {
- game.doCarTurn(RIGHT);
- Assertions.assertEquals(new PositionVector(1, 0), game.getCarVelocity(0));
- } catch (PositionVectorNotValidException positionVectorNotValidException) {
- positionVectorNotValidException.printStackTrace();
- }
+ game.doCarTurn(RIGHT);
+ Assertions.assertEquals(new PositionVector(1, 0), game.getCarVelocity(0));
}
@Test
void carCrash() {
- try {
- game.doCarTurn(PositionVector.Direction.UP);
- Assertions.assertTrue(game.onlyOneCarLeft());
- } catch (PositionVectorNotValidException positionVectorNotValidException) {
- positionVectorNotValidException.printStackTrace();
- }
+ game.doCarTurn(PositionVector.Direction.UP);
+ Assertions.assertTrue(game.onlyOneCarLeft());
}
}
@@ -141,7 +133,7 @@ class GameTest {
@Test
void winner() {
- game = new Game(new interFace("Test",new Integer[]{0,2,1},new PositionVector.Direction[]{RIGHT,
+ game = new Game(new interFace("Test",new Integer[]{0,2,0},new PositionVector.Direction[]{RIGHT,
RIGHT,
RIGHT,
NONE,
@@ -186,7 +178,7 @@ class GameTest {
@Test
void crashA() {
- game = new Game(new interFace("Test",new Integer[]{0,2,2},new PositionVector.Direction[]{UP}));
+ game = new Game(new interFace("Test",new Integer[]{0,1,1},new PositionVector.Direction[]{UP}));
game.initPhase();
Assertions.assertEquals("b",game.gamePhase());
}
@@ -195,8 +187,8 @@ class GameTest {
private class interFace extends UserInterface {
- private final PositionVector.Direction[] directions;
- private final Integer[] instructions;
+ private PositionVector.Direction[] directions;
+ private Integer[] instructions;
private int pointerDir,pointerInstruction;
diff --git a/src/test/java/ch/zhaw/pm2/racetrack/TrackTest.java b/src/test/java/ch/zhaw/pm2/racetrack/TrackTest.java
index a19e607..4d88811 100644
--- a/src/test/java/ch/zhaw/pm2/racetrack/TrackTest.java
+++ b/src/test/java/ch/zhaw/pm2/racetrack/TrackTest.java
@@ -109,28 +109,19 @@ public class TrackTest {
@Test
@DisplayName("Will Car Crash")
void willCarCrash() {
- try {
- //Car will Crash
- Assertions.assertTrue(trackObj.willCrashAtPosition(0, new PositionVector(25, 21)));
- //Car will not Crash and is on track
- Assertions.assertFalse(trackObj.willCrashAtPosition(0, new PositionVector(7, 22)));
- //Car will not Crash and is on finishLine
- Assertions.assertFalse(trackObj.willCrashAtPosition(0, trackObj.getFinishLine().get(0)));
- } catch (PositionVectorNotValidException positionVectorNotValidException) {
- positionVectorNotValidException.printStackTrace();
- Assertions.fail("Test should not throw error");
- }
+ //Car will Crash
+ Assertions.assertTrue(trackObj.willCrashAtPosition(0, new PositionVector(25, 21)));
+ //Car will not Crash and is on track
+ Assertions.assertFalse(trackObj.willCrashAtPosition(0, new PositionVector(7, 22)));
+ //Car will not Crash and is on finishLine
+ Assertions.assertFalse(trackObj.willCrashAtPosition(0, trackObj.getFinishLine().get(0)));
+
}
@Test
@DisplayName("Make Car Crash")
void makeCarCrash() {
- try {
- trackObj.carDoesCrash(0, new PositionVector(6, 22));
- } catch (PositionVectorNotValidException positionVectorNotValidException) {
- positionVectorNotValidException.printStackTrace();
- Assertions.fail("Test should not throw exception");
- }
+ trackObj.carDoesCrash(0, new PositionVector(6, 22));
Assertions.assertEquals(Track.CRASH_INDICATOR, trackObj.getTrack().get(22).charAt(6));
Assertions.assertTrue(trackObj.getCar(0).isCrashed());
}
@@ -140,7 +131,6 @@ public class TrackTest {
@DisplayName("Negative TestCase")
class negativeClass {
File file;
-
@BeforeEach
void setup() {
file = new File(".\\tracks\\challenge.txt");
@@ -165,14 +155,5 @@ public class TrackTest {
File testfile = new File(".\\src\\test\\InvalidTracks\\sameCar.txt");
Assertions.assertThrows(InvalidTrackFormatException.class, () -> new Track(testfile));
}
-
- @Test
- @DisplayName("Invalid Position Vector used")
- void invalidPositionVector() {
- Assertions.assertThrows(PositionVectorNotValidException.class, () -> trackObj.willCrashAtPosition(0, new PositionVector(100, 200)));
- Assertions.assertThrows(PositionVectorNotValidException.class, () -> trackObj.carDoesCrash(1,new PositionVector(200,100)));
- }
-
}
-
}