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
+7V1Zd6JIG/41Oce+sI8sil66TLozX7qT6aS3q+8QqSjTCDZgEvvXTxUCAvWyiFCAMBfToQSXet569+VKmG/ePpjydv3JUJB2xQ+UtythccXz3EAY43/Iyv6wMhInh4WVqSruTceFB/UP8p50V3eqgqzQjbZhaLa6DS8uDV1HSzu0Jpum8Rq+7dnQwp+6lVeIWnhYyhq9+l1V7LW7OhqKxxc+InW19j6aG7k/cCN7d7s/xVrLivEaWBL+uhLmpmHYh782b3Okkd3zNub7zf67dvtr9OHvf6zf8tfZ/x4/f+sf3uz6lEf832Ai3c791n9+PV9//Cb++2N7f/3P6+DD9OnvvvvI4EXWdu6GfZA3yP299t7bRetV3Wiyjq9mz4ZuP7iv4C2YyZq60vHfS/zdkIkXXpBpqxiAqfuCbWzx6nKtasqtvDd25BdYtrz85V3N1oap/sFvK2v4JQ4v4JdN26UlfhS644E8iZcHeNVEFr7n3tsWzl+6lS3bvWdpaJq8tdQn5wuTWzayuVL1mWHbxsZ7I2OnK0hxr3ycnQvbNH75pEOezwiGCxrZDfQWoEUXnA/I2CDb3ONb3FfH7hPuQfOo7vVItcLEXVsHCJaX3EXZPSkr/539D/uCT5asr/AW+J/GC4PQx3Ei/XncCPq8UfjjZA3Drss2mpFNtIIkiP8I/NDjkkOYJxCpSBEpRaCa6hDn2t4caSgKnEepGnq2ATrdqIpC3m5mbeWlqq8eCd0u+txx5dZ5cCEcV764+yI4RGTLtnygM0I5mvyEtHvDUm3VIO9vHu6dbQ1Vt53NG86uhgtnxbTnho6/saw6NIUw/b4iQsMAtSWe43Rq24dhTCMvQYynrhDOCaB+HG/42Sftx8+pYajPX3+8TvtWX+AAVGeE+/R2FjJvCDd5lpf4penX4PU7Cnv8i20I+7mhGZghLXTjwLhUTYssZaWI17Vqo4et820Wr1hQUjyjLJhGGbmAkMAEzoKJm0Awqbpq369lC/Xe4R//hAU6kvVWATOpGhgeOj+ChTTM6x9NLCR7h7+R4lzhY3Stavj0CNPDdZvA4rIK0/LQ4uPR+mS8oAfM+2202veWMt7Z6Rz/n59b7iJeCN7zzt+ptsA3rBw+AeKCKyysjlywXZCMK4cE0gpnhq7t73SEzw9R1lornXzzuzp4hhA8mLtZmJVhzbm90ACGFmNoKGRgjaAz+ss3+iNWuACw1eEYII5Rkl0Wb/UPwx/HS7QVWIHRD1OpRJFp33Y12VsVQ82P5A0hMo1QE9aNMFPx11ZH07n2bCXxjJ5jz4OEUx5XGUEMf/5l+vDx/zefFzfz6ePdF4zdco11Wwlvso5PvrSoJUhBdieWhdiwcsRo076PYVGt9a3jTQOOmefO+oZZC9768HGrOahl4TiuGkfvjWkcH/dbYkwa+rO6etiipfqM947g997ZKfwy7eq/ZKg4rmqs+DGNFVGKwdPmeAFaK9E4sWqwIKM/AkCL4g4FoQqonCCq47JAhTxxs4PH1NEviZvU95a26sCNxaoPHH3i+iaSFYJFy8HB7LBqcGiHW19WFCykrF7LsBArx4L2rhGVDx8Uova1DQ6pcjho29eBY45t3Z613zwZmmv5vgOMqBZBJQwqhwpwKymm/EqgutMdNeBGV4iZZJi9bRgpYRqFbh4Bt1VYClVjKdKGL4nKIfva92I4YYYT/RitAnFUOYhgHhAG8aCSt+xMTSqHAzSPNsYLiamS7ATMHclvmWKLsV3YiHzl2ADm0Ub+RZAh+SE3B/HVbpCGlYME5iW8ks00ZWs9tT3ZE8EJKxMp6kbzIuYFYVq5X0KMS2ZYGMhyYKXBXJLl+zRE24TjsHIXhgjGKPEuLXeabKN7x0N6p9/L9rrnpCMc3ai06o90JfZlkmY5NU1536me8eTA0ovystrOf958Vv7++fqv9OHPV3Vwew8Uv3TUkI0aKJSzEkg8NVTuxOFEidpxpKyQlwjgbmV4OwzTXhsrQ5e1W8OJ2xBU/kW2vXczmeSdbYQxQ2+q/cN9nPz9k/z9Xhq6l4u3wGuLvXeh45/oPPV+6F3+DL52fMy58p5z6HZK6uiOv8BZu1bJ7rhPKN4dxhbph5XA6zS+SblPlrEzlyhhn11Zir8ENvIS7nNxJhAkshMT4dOqvqAQNRZOHbQGkOLG67Lnys+eG41dWLyiDCDtFcxnGyYwkfjsuZrWzIH0Cmk6EQpte+x6mJnc4nPsQLjLCl17IjKAYXHS6D3vSaCfgZeKlUZpkiYkrRRV3hi68rhW9YjQOp2lpAolKaNQ4rhaSSU6mHFI9uqkUQXSiBtMwvJByigexFy53E2SRnTWWyeNYo5yY6QRNxyXKY6k8sWRIltr58v6LCsinRIsJdeWKtVS8oRNqlSSJrWSShwU0htph8Nw+Bfpuw0ynVxkvOS6O/x/r3iBI/vpVbzi9wJzlc+Raj6z6ARbumDjIqIGaEsAS7aLt7M4HqD1TrTB/KA5sk0s1dTKIdq4UwRbEV6/kHAsWrAJGQVbvXyAnBcHZOQh5gJkErDP05SgYlSgejiLM1MK5+WO14VWoOKRPDrQQjWxhHTu6bSfWjiZgdY/LXUyc11ntnTlR8hMcDVRfuiwuFOI2HkUmbMeMeJQ5KC2Y7wk0LQhDS/ep+g1og1mQ5IHwh0G+DkpILvTtX3D69KL6PAIkkppCRVDmpH0t/EpNC2CBmj9wBga2kPXf0GasVTtPQ2NNGvrGQJ6OzAGinYv9Z3MUvLTp142cHsBgjo6MEYI6Ojwqur3ri55yAZuEyJA2wbGiACKwSbQPzPSTrNd6ADtF9iiA8WGOpPxTFVvkBHVskzGIdgflVSMHTXyY33LZdVB5GjOSac6M+aQYI2SjvfcL066rEL1HF06K8cIrDmSl0ukEacx6snuX4cD5buJW3aWgLIBxjiBNUVE32h27fLJUEC9HRhDQadDkoIepz6vZVgAvRnYYjGinT+Hsv6bRduwAFosMMYCbLGg6ksT66ZYq3aN1bbhAvRaYIwL7dzBuOBfvlvabUUF6rLAGBV41gMKQdI+vw7UWYExMKDVgoH55nquHVxabLRAjRIYQwQaLRY62pXxAaBj++h2cTyoLQJj1EATJuoOaPPJgnoVMMYItG1C7oCQPyAM1vuWugegrgKMcYNKn9roHhhV7h7wBvt27oFR5e4BCXQPqIdmSkhp4HSogpCp3Fkggc4CrMKFxhQmxFNbdpQq9yJIoBcBm0VhxMiJam3YW6rcqyBC+luumkhn/7qCyEoLIv3p7F1BJEXoXa1/Kv8SG1fs76UNNbbWv/mtZzyiKa7AzX3UcWoHmBsnTN5PAv+Fy584PlJZcPiB7pscyQx43yjTlCLM8LAF1DsVxZkkur9ftTW9F0PCWVv6ebVQZZOwxIkJFCyNc1LwKPJG46i2WDYBQw6MCEXjt1G3Vpy2HaBc2dpiRQNfPKtv5ASUpyyNI9qLMKC1F3ACWFm6+Jh2PpRoFaUr3HnsoqKwESPYeHO7A9hAekZpdtKYjiARq5V0zo3FqCtFZGHyDMKUIgo0pfglzyEbZHDxNs8EGszgUi042TNQ1N+Qjs+pNs24iHaaIAGVxmsmdEJB37H3CKdoeoLH6XhAVYlM8Rh3TWtLgBWqYQT5dELF+HnHDHRQR6V6byuTrzfF13i/Gx1EOB0jDmhczfjsgfkFJAfk0yFWndSJ5rKxARQPxnIKqNa+zLG4OdABmuyyRYfzWgCymhsRdpf67qWTfE1+O7mT+4IlO5YCPqonzSC2ULn9wcauw7txLVK9bNpSnJGnk0f+9oI5W+WW2V4wM1F4+mVNiGJMh84WxmfDTgzbd84PBs6PoZjT+eErdpfr/Bhn8Eq33mobZya5E50jSbMDzlM6wQy9CzQIToamBhqnwFjj5DuN0z8XWYOdNdM4J8AEM9leX2MhbLwis9MxqtYxxuN0HUMcQDI/KVB6GTrGBGiytdyZBIOEoZzNFUqTIoIpILGU56QCum65EH2L7SzYKoiA+ApbiLgBrdMdAl5uoPKyhtSWACEQS2ENIeALvpiY5emAQP0fGfO9LmhZBq5AF0kQ19LsX27AA8DO4nTmcPjyip8nTwxvdJQmB5xA33LWjBNs63GZYbQc6iNfNUCTlgSgc2AzrBobjqOjVbVxOJXmOIKDY2l+LJoMzhuA5JXNV+BviqnjmETzuaVh+D1KToP3tyTAKr5anQurchcWLwzTXVjCBHIp8RfvwuIGtIDr7zDZ3hCqe3YEy/Rr6LrBUu54Rs/xYIG0UqKKCHkZZQyIgn8BptDG29c5UAGcVqxRgRyLGJWF31i8VYAALijWgEBN3jqPx7nAQq4sENnyXB4c7R/GNlhUt+qlSK25zzNdhjkPHtdGG9Z5YAVaQ7A+sLH9/S7LtM6DDuCYYowOR3v0KRDo0u8AHuG9gucAp1mt0MjhtCr2kK0c8AYcDf+/jquFl5wXnoYRoAAom8dbO9d6HkVsFp6LWM+Z+ymMIgkD3IixHc7RisCNji9Ux6V6bZgb2f7rbYm2hY8v7izyjEklg4hFzkEMD6T3aHOOC7TIuS50ly5TudLqeovQYxfb5ffV9d2zNX66FX5bnLK9/uy1h4txVsPiqZziC78rzEnlF673O1eyZM5yjIKlM2YzGcWzUE5XIyeTJXCDezZixfIkkuDPeY0w4qRv9AHJ5R1Huj18hYI5Fu0LcSXuoxO/7ERuHURutGFWJ3J9AuYhD0MncmNOeXNELkehWJnI5XPJ3FMEbpowzSKQixa4vJBR4Ip8PQTuICpw3RzvWIEbecDr4hbbrI1LvL8kAc3TWUbhxK/Phv2NyOtOSNdLSAvjTkj7RAwNWuqEdMxJr6WQhr+zOEkU04WncZ1vCqeI5ZCkdb9+gukLtk0tsxMBx2d1U3NZ3dSs+lMkO1GKJpVT4g5+fSl/UvvceJ9JTsKpjlb4wp0m5xELTwcCPmHO2qk2Fag2Ub0XmlzWVr2m8/dn0Gtq7e9P5oeRhOD4TMqOEbGwsaIucqgICGyccflTUjiBdoT2SarNzd2VMH08/HGciEoRcJOycvgipp3AhFJaUo4AlNmSPX9E5sbB5ACSf9laqKCidrZQ8d3AoTKAhUrd2Up1gQeAnYUEe+8VaUv8eY/OGbuE3sE5kPJlSYXsEiyu3WI07Bv92YlKkynSdqthAhKBWcMEOXZnFtKwMnW3pSG64ueGs2yBUwy8m4L9QN5dQJVMDmwzq7blYQtVZbjY+tndva0m7zFm82iGfmD9mKgfP0W8ZfCC1fGM4aV9F/0VCiCr7zZPXg+YDrrk4nnG0IGdDRzh6GRtHXpPEIuC/Ns2scgDgVfWAEEWxOz3TrXbrbEIwFQK1tAwjlgyGONYw9BT5siTa5HVJe4k0mlnHSmcSQoZKWFQM0qgfT6swtWDjKTRcMIQsvKIYb0oY0j3ym5QgkvdCz28EXrpkqPw0b9nksUwkWHUP2M5fz/1elCO35AvnXTEokknV8ayH750tePRSAiSYer93hzdchOQh/SQ86roOg87vIDSt0Hm6UOF0/WZLJGtrZVHh4qk/OXngfXQqfisVZJiZQl/YLWPUKrdxZdveNVw2Ai40YA1BpdfVcZKYPpga41FJiJ2JJOJZGrGUsqch1jjdrIBKiy8oWxW+qi4nWykjY0wiHiTi2tjk7Qh0blIKqa9rqVs1Umk/Diazg5NRRKhmMRFJbSDlEtH/PuhUCJFsfUMVyWeyrNyRkG6KCBWBX5jIEAfbYTYIjigvFCmcADdljeYm7uTjtKGHAXzJRo47qgYDKEUUKYYAv2YZU3zoYGz0jogs01JYook2MNZW+6w6ogUrL7YKC7FEL/UZuSgOUhMkYMyeyMAtCi7viBUpYyoltevB+z0DBs+vYhS6fd3bko+VEEKJpQEyvQoAp2C+0sTYZA+uZpNr2WQQMmdbCGhvQdYRSFTxfZzX771LEeKkTRC/C9pt/1kGBqSm5KLWxBYUKInU7DA6odGt0EvBhkwz5PtMaKhcTW/zud2xdznNpLCPrAJQB8COIn8osY4wYcLUpyEbcOHkCcfyrNGOJU1qBBGB5qlILw0fP54QehAo5yYogPMC6AQaLsteTqs0ECosiYlw4eO1oGxXuXI714CY5zHHstGGzGnAwjVbzNmm7STB/3eyZrVWxob8osfLtCAyQEUNMqJLQeloxr46DhKJbFhOnW5AnVZGAjp6rIIqa++3XXB6jJkcwtK2yM4XCEtkUCaKk1GQMqb4Jz4+4u0fgpphcQWIqi/oYB0pQMoTlNmDBDUCYAA9O0iLdTT26hAcWqmCHFdM7EycIWi2BCu5dmoYIuHoO7c25roRTV2lqNIO+cwoFfjTx2QSMFRF4nvsNJs87WY3kdsDy2dXYLBfVZ1laRy9y7FXi2mbRFbgQciszTllgMDxa2ZAiPQVfEMy0TPbp9wTploTUr/3BtT63QKb6fgPHryuKboHFkxVMycer/HiuLu5yXpzAfEUWh+1Knl1fjSNAw7eDtmCetPhoLIHf8B
\ 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) {
}