diff --git a/.gitignore b/.gitignore
index 0299504..806b528 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,6 +1,7 @@
*.DS_Store
*.metadata/
*.class
+*.prefs
/GameProject/doc/
/GameProject/log/
/GameProject/highscore.txt
diff --git a/GameProject/src/base/MovingObjectsGame.java b/GameProject/src/base/MovingObjectsGame.java
new file mode 100644
index 0000000..ab52fec
--- /dev/null
+++ b/GameProject/src/base/MovingObjectsGame.java
@@ -0,0 +1,33 @@
+package base;
+
+import java.io.IOException;
+import playground.LevelMovingObjects;
+
+/**
+ * main class to start a game with only one level {@link playground.LevelMovingObjects}.
+ *
+ */
+public class MovingObjectsGame extends GameLoop {
+
+ /**
+ * starts this game.
+ *
+ * @param args command line parameters (forwarded to {@link GameLoop#runGame(String[])}).
+ * @throws IOException if highscore.txt file cannot be written or accessed, the exception is
+ * thrown (and game ends).
+ */
+ public static void main(String[] args) throws IOException {
+ GameLoop myGame = new MovingObjectsGame();
+ myGame.runGame(args);
+ }
+
+ /**
+ * adds only one level to play ({@link playground.LevelMovingObjects}).
+ */
+ @Override
+ public void defineLevels() {
+ this.resetLevels();
+ this.addLevel(new LevelMovingObjects());
+ }
+
+}
diff --git a/GameProject/src/collider/package-info.java b/GameProject/src/collider/package-info.java
new file mode 100644
index 0000000..f101edb
--- /dev/null
+++ b/GameProject/src/collider/package-info.java
@@ -0,0 +1,9 @@
+/**
+ * The package contains classes implementing a 'bounding box' area around game objects.
+ * The abstract base class {@link Collider} provides the abstract method {@link Collider#collidesWith(Collider)},
+ * which needs to be implemented by child classes to detect and decide whether or not an object with such instance really collides with the other.
+ * {@link Collider} instances are to be used for game objects ({@link gameobjects}); see constructors.
+ *
+ * The benefit of seperating Colliders from visual representations is that the area for collisions can be smaller/bigger/other shape to improve game play experience.
+ */
+package collider;
diff --git a/GameProject/src/controller/EgoController.java b/GameProject/src/controller/EgoController.java
index 45890b5..e00877a 100644
--- a/GameProject/src/controller/EgoController.java
+++ b/GameProject/src/controller/EgoController.java
@@ -165,23 +165,14 @@ public class EgoController extends ObjectController {
released = false;
}
- /**
- * Generelle Idee: Wenn eine Taste gedrückt wird wird sie gespeichert. wenn die zuvor
- * gespeicherte Taste wieder losgelassen wird stoppt das Ego-Objekt. Falls vor dem Loslassen
- * eine andere Taste gedrückt wird, wird diese gespeichert und die alte vergessen. Dh das
- * loslassen der alten Taste stoppt das Objekt nicht. Spezialfall: space, das loslassen von
- * space stoppt das Objekt nicht!
- */
if (pressed == true) {
lastPressedKey = pressedKey;
pressedKey = kc;
}
- /**
- * Nur eine losgelassene Taste die auch vorher gedrückt wurde stoppt das Objekt. Eine
- * losgelassene Taste die nicht vorher gedrückt wurde bzw vergessen wurde stoppt das Objekt
- * nicht
+ /*
+ * Only if the released key is the same as the before pressed one, it stops the ego object movement.
*/
if (released == true) {
if (pressedKey != null) {
@@ -219,7 +210,7 @@ public class EgoController extends ObjectController {
// shot
if (kc == KeyEvent.VK_SPACE) {
- // space is not registered! Releasing space does not stop the egoobject
+ // space is not registered! Releasing space does not stop the ego object
this.onSpace(e, ego);
}
}
diff --git a/GameProject/src/controller/ObjectController.java b/GameProject/src/controller/ObjectController.java
index dd16f16..65478f2 100644
--- a/GameProject/src/controller/ObjectController.java
+++ b/GameProject/src/controller/ObjectController.java
@@ -56,7 +56,7 @@ public abstract class ObjectController {
public void applySpeedVector() {
double ts = this.getPlayground().getTimestep();
this.setX(this.getX() + this.getVX() * ts);
- gameObject.setY(this.getY() + this.getVY() * ts);
+ this.setY(this.getY() + this.getVY() * ts);
}
diff --git a/GameProject/src/gameobjects/package-info.java b/GameProject/src/gameobjects/package-info.java
new file mode 100644
index 0000000..7ec704e
--- /dev/null
+++ b/GameProject/src/gameobjects/package-info.java
@@ -0,0 +1,7 @@
+/**
+ * The package gameobjects contains all objects with a visual representation on screen.
+ * They can be combined to use controller instances for their behavior (subclasses of {@link controller.ObjectController}).
+ * The abstract base class is {@link GameObject}, which forces child-classes to implement the method
+ * {@link GameObject#updateObject()}.
+ */
+package gameobjects;
diff --git a/GameProject/src/playground/Level4.java b/GameProject/src/playground/Level4.java
index d2bac0b..dacfd4f 100644
--- a/GameProject/src/playground/Level4.java
+++ b/GameProject/src/playground/Level4.java
@@ -10,14 +10,14 @@ import org.apache.logging.log4j.Logger;
/**
- * extends {@link SpaceInvadersLevel}
+ * extends {@link SpaceInvadersLevel} with aliens that need two hits to be destroyed.
*