diff --git a/.idea/.name b/.idea/.name
new file mode 100644
index 0000000..2491201
--- /dev/null
+++ b/.idea/.name
@@ -0,0 +1 @@
+datapirates
\ No newline at end of file
diff --git a/.idea/checkstyle-idea.xml b/.idea/checkstyle-idea.xml
new file mode 100644
index 0000000..d943f1e
--- /dev/null
+++ b/.idea/checkstyle-idea.xml
@@ -0,0 +1,15 @@
+
+
+
+ 10.6.0
+ JavaOnly
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/checkstyleidea-libs/readme.txt b/.idea/checkstyleidea-libs/readme.txt
new file mode 100644
index 0000000..89f45fa
--- /dev/null
+++ b/.idea/checkstyleidea-libs/readme.txt
@@ -0,0 +1,6 @@
+This folder contains libraries copied from the "javs" project.
+It is managed by the CheckStyle-IDEA IDE plugin.
+Do not modify this folder while the IDE is running.
+When the IDE is stopped, you may delete this folder at any time. It will be recreated as needed.
+In order to prevent the CheckStyle-IDEA IDE plugin from creating this folder,
+uncheck the "Copy libraries from project directory" option in the CheckStyle-IDEA settings dialog.
diff --git a/.idea/compiler.xml b/.idea/compiler.xml
new file mode 100644
index 0000000..b589d56
--- /dev/null
+++ b/.idea/compiler.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/gradle.xml b/.idea/gradle.xml
new file mode 100644
index 0000000..5f29c19
--- /dev/null
+++ b/.idea/gradle.xml
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml
new file mode 100644
index 0000000..da7022b
--- /dev/null
+++ b/.idea/inspectionProfiles/Project_Default.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml
new file mode 100644
index 0000000..614d3a2
--- /dev/null
+++ b/.idea/jarRepositories.xml
@@ -0,0 +1,25 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries-with-intellij-classes.xml b/.idea/libraries-with-intellij-classes.xml
new file mode 100644
index 0000000..9fa3156
--- /dev/null
+++ b/.idea/libraries-with-intellij-classes.xml
@@ -0,0 +1,65 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/video1.xml b/.idea/libraries/video1.xml
new file mode 100644
index 0000000..158c287
--- /dev/null
+++ b/.idea/libraries/video1.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
new file mode 100644
index 0000000..42e7fa5
--- /dev/null
+++ b/.idea/misc.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/modules/datapirates.iml b/.idea/modules/datapirates.iml
new file mode 100644
index 0000000..9e3449c
--- /dev/null
+++ b/.idea/modules/datapirates.iml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/modules/datapirates.test.iml b/.idea/modules/datapirates.test.iml
new file mode 100644
index 0000000..dc2d6f0
--- /dev/null
+++ b/.idea/modules/datapirates.test.iml
@@ -0,0 +1,29 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/shelf/Uncommitted_changes_before_Checkout_at_2023-02-19_3_37_p_m__[Changes]/buildOutputCleanup.lock b/.idea/shelf/Uncommitted_changes_before_Checkout_at_2023-02-19_3_37_p_m__[Changes]/buildOutputCleanup.lock
new file mode 100644
index 0000000..31c34a5
Binary files /dev/null and b/.idea/shelf/Uncommitted_changes_before_Checkout_at_2023-02-19_3_37_p_m__[Changes]/buildOutputCleanup.lock differ
diff --git a/.idea/shelf/Uncommitted_changes_before_Checkout_at_2023-02-19_3_37_p_m__[Changes]/executionHistory.bin b/.idea/shelf/Uncommitted_changes_before_Checkout_at_2023-02-19_3_37_p_m__[Changes]/executionHistory.bin
new file mode 100644
index 0000000..d2dca53
Binary files /dev/null and b/.idea/shelf/Uncommitted_changes_before_Checkout_at_2023-02-19_3_37_p_m__[Changes]/executionHistory.bin differ
diff --git a/.idea/shelf/Uncommitted_changes_before_Checkout_at_2023-02-19_3_37_p_m__[Changes]/executionHistory.lock b/.idea/shelf/Uncommitted_changes_before_Checkout_at_2023-02-19_3_37_p_m__[Changes]/executionHistory.lock
new file mode 100644
index 0000000..8102680
Binary files /dev/null and b/.idea/shelf/Uncommitted_changes_before_Checkout_at_2023-02-19_3_37_p_m__[Changes]/executionHistory.lock differ
diff --git a/.idea/shelf/Uncommitted_changes_before_Checkout_at_2023-02-19_3_37_p_m__[Changes]/file-system.probe b/.idea/shelf/Uncommitted_changes_before_Checkout_at_2023-02-19_3_37_p_m__[Changes]/file-system.probe
new file mode 100644
index 0000000..8409ee9
Binary files /dev/null and b/.idea/shelf/Uncommitted_changes_before_Checkout_at_2023-02-19_3_37_p_m__[Changes]/file-system.probe differ
diff --git a/.idea/shelf/Uncommitted_changes_before_Checkout_at_2023-02-19_3_37_p_m__[Changes]/fileHashes.bin b/.idea/shelf/Uncommitted_changes_before_Checkout_at_2023-02-19_3_37_p_m__[Changes]/fileHashes.bin
new file mode 100644
index 0000000..445719c
Binary files /dev/null and b/.idea/shelf/Uncommitted_changes_before_Checkout_at_2023-02-19_3_37_p_m__[Changes]/fileHashes.bin differ
diff --git a/.idea/shelf/Uncommitted_changes_before_Checkout_at_2023-02-19_3_37_p_m__[Changes]/fileHashes.lock b/.idea/shelf/Uncommitted_changes_before_Checkout_at_2023-02-19_3_37_p_m__[Changes]/fileHashes.lock
new file mode 100644
index 0000000..dcb6b6f
Binary files /dev/null and b/.idea/shelf/Uncommitted_changes_before_Checkout_at_2023-02-19_3_37_p_m__[Changes]/fileHashes.lock differ
diff --git a/.idea/shelf/Uncommitted_changes_before_Checkout_at_2023-02-19_3_37_p_m__[Changes]/shelved.patch b/.idea/shelf/Uncommitted_changes_before_Checkout_at_2023-02-19_3_37_p_m__[Changes]/shelved.patch
new file mode 100644
index 0000000..a8ad11b
--- /dev/null
+++ b/.idea/shelf/Uncommitted_changes_before_Checkout_at_2023-02-19_3_37_p_m__[Changes]/shelved.patch
@@ -0,0 +1,1089 @@
+Index: .idea/jarRepositories.xml
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
+<+>\r\n\r\n \r\n \r\n
++
++
++
++
+
+\ No newline at end of file
+Index: datapirates/build.gradle
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
+<+>plugins {\r\n id 'java'\r\n}\r\n\r\ngroup 'org.example'\r\nversion '1.0-SNAPSHOT'\r\n\r\nrepositories {\r\n mavenCentral()\r\n maven {\r\n url 'https://repo.clojars.org'\r\n name 'Clojars'\r\n }\r\n}\r\n\r\ndependencies {\r\n implementation 'com.vijaykiran.processing:org.processing.core:2.0b8'\r\n implementation 'org.processing:processing-complete:3.3.7'\r\n testImplementation 'org.junit.jupiter:junit-jupiter-api:5.8.1'\r\n testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.8.1'\r\n}\r\n\r\ntest {\r\n useJUnitPlatform()\r\n}
+===================================================================
+diff --git a/datapirates/build.gradle b/datapirates/build.gradle
+--- a/datapirates/build.gradle
++++ b/datapirates/build.gradle
+@@ -14,8 +14,7 @@
+ }
+
+ dependencies {
+- implementation 'com.vijaykiran.processing:org.processing.core:2.0b8'
+- implementation 'org.processing:processing-complete:3.3.7'
++ implementation 'org.processing:core:3.3.7'
+ testImplementation 'org.junit.jupiter:junit-jupiter-api:5.8.1'
+ testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.8.1'
+ }
+Index: datapirates/.gradle/buildOutputCleanup/cache.properties
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
+<+>#Thu Feb 02 19:32:09 PST 2023\r\ngradle.version=7.4.2\r\n
+===================================================================
+diff --git a/datapirates/.gradle/buildOutputCleanup/cache.properties b/datapirates/.gradle/buildOutputCleanup/cache.properties
+--- a/datapirates/.gradle/buildOutputCleanup/cache.properties
++++ b/datapirates/.gradle/buildOutputCleanup/cache.properties
+@@ -1,2 +1,2 @@
+-#Thu Feb 02 19:32:09 PST 2023
+-gradle.version=7.4.2
++#Fri Feb 17 18:32:01 PST 2023
++gradle.version=7.5.1
+Index: datapirates/src/main/java/org/example/Enemy.java
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
+<+>package org.example;\r\n\r\nimport processing.core.PVector;\r\n\r\nimport java.awt.*;\r\n\r\npublic class Enemy extends Sprite {\r\n public Enemy(PVector pos, PVector direction, float size, float speed, Color clr, Window scene) {\r\n super(pos, direction, size, speed, clr, scene);\r\n }\r\n\r\n public void init(Enemy enemy) {}\r\n\r\n public void remove(Enemy enemy) {}\r\n\r\n public void update() {}\r\n\r\n}\r\n
+===================================================================
+diff --git a/datapirates/src/main/java/org/example/Enemy.java b/datapirates/src/main/java/org/example/Enemy.java
+--- a/datapirates/src/main/java/org/example/Enemy.java
++++ b/datapirates/src/main/java/org/example/Enemy.java
+@@ -13,6 +13,8 @@
+
+ public void remove(Enemy enemy) {}
+
+- public void update() {}
++ public void update() {
++ this.position = this.getPosition().add(this.getDirection().copy().mult(getSpeed()));
++ }
+
+ }
+Index: datapirates/src/main/java/org/example/Timer.java
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
+<+>package org.example;\r\n\r\npublic class Timer {\r\n\r\n int currTime;\r\n int endTime;\r\n}\r\n
+===================================================================
+diff --git a/datapirates/src/main/java/org/example/Timer.java b/datapirates/src/main/java/org/example/Timer.java
+--- a/datapirates/src/main/java/org/example/Timer.java
++++ b/datapirates/src/main/java/org/example/Timer.java
+@@ -4,4 +4,13 @@
+
+ int currTime;
+ int endTime;
++
++ public Timer() {
++ currTime = 0;
++ endTime = 30;
++ }
++
++ public void run() {
++ currTime++;
++ }
+ }
+Index: datapirates/src/main/java/org/example/Score.java
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
+<+>package org.example;\r\n\r\npublic class Score {\r\n}\r\n
+===================================================================
+diff --git a/datapirates/src/main/java/org/example/Score.java b/datapirates/src/main/java/org/example/Score.java
+--- a/datapirates/src/main/java/org/example/Score.java
++++ b/datapirates/src/main/java/org/example/Score.java
+@@ -1,4 +1,27 @@
+ package org.example;
+
+ public class Score {
++
++ private int value;
++
++ private static Score score;
++
++ private Score(int val) {
++ value = val;
++ }
++
++ public static Score getInstance() {
++ if (score == null)
++ score = new Score(0);
++ score.value = 0;
++ return score;
++ }
++
++ public void setValue(int value) {
++ this.value = value;
++ }
++
++ public int getValue() {
++ return value;
++ }
+ }
+Index: datapirates/src/main/java/org/example/Sprite.java
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
+<+>package org.example;\r\n\r\nimport processing.core.PVector;\r\n\r\nimport java.awt.*;\r\n\r\npublic class Sprite implements Comparable {\r\n\r\n protected PVector position;\r\n\r\n private PVector direction;\r\n\r\n private float size;\r\n\r\n /* Might include a speed buff thingy. */\r\n private float speed;\r\n\r\n private Color color;\r\n\r\n protected Window window;\r\n\r\n public Sprite(PVector pos, PVector direction, float size, float speed, Color clr, Window scene) {\r\n\r\n }\r\n\r\n \r\n /**\r\n * Compares this object with the specified object for order. Returns a\r\n * negative integer, zero, or a positive integer as this object is less\r\n * than, equal to, or greater than the specified object.\r\n *\r\n *
The implementor must ensure {@link Integer#signum\r\n * signum}{@code (x.compareTo(y)) == -signum(y.compareTo(x))} for\r\n * all {@code x} and {@code y}. (This implies that {@code\r\n * x.compareTo(y)} must throw an exception if and only if {@code\r\n * y.compareTo(x)} throws an exception.)\r\n *\r\n *
The implementor must also ensure that the relation is transitive:\r\n * {@code (x.compareTo(y) > 0 && y.compareTo(z) > 0)} implies\r\n * {@code x.compareTo(z) > 0}.\r\n *\r\n *
Finally, the implementor must ensure that {@code\r\n * x.compareTo(y)==0} implies that {@code signum(x.compareTo(z))\r\n * == signum(y.compareTo(z))}, for all {@code z}.\r\n *\r\n * @param o the object to be compared.\r\n * @return a negative integer, zero, or a positive integer as this object\r\n * is less than, equal to, or greater than the specified object.\r\n * @throws NullPointerException if the specified object is null\r\n * @throws ClassCastException if the specified object's type prevents it\r\n * from being compared to this object.\r\n * @apiNote It is strongly recommended, but not strictly required that\r\n * {@code (x.compareTo(y)==0) == (x.equals(y))}. Generally speaking, any\r\n * class that implements the {@code Comparable} interface and violates\r\n * this condition should clearly indicate this fact. The recommended\r\n * language is \"Note: this class has a natural ordering that is\r\n * inconsistent with equals.\"\r\n */\r\n @Override\r\n public int compareTo(Sprite o) {\r\n return 0;\r\n }\r\n}\r\n
+===================================================================
+diff --git a/datapirates/src/main/java/org/example/Sprite.java b/datapirates/src/main/java/org/example/Sprite.java
+--- a/datapirates/src/main/java/org/example/Sprite.java
++++ b/datapirates/src/main/java/org/example/Sprite.java
+@@ -20,10 +20,90 @@
+ protected Window window;
+
+ public Sprite(PVector pos, PVector direction, float size, float speed, Color clr, Window scene) {
++ position = pos;
++ this.direction = direction;
++ this.size = size;
++ this.speed = speed;
++ color = clr;
++ this.window = scene;
++ }
++
++ public void draw() {
++ window.pushStyle();
++ window.fill(this.color.getRed(), this.color.getGreen(), this.color.getBlue());
++ window.ellipse(this.position.x, this.position.y, size, size);
++ window.popStyle();
++ }
++
++ public void bounce() {
++ if (this.position.x <= 0 ||
++ this.position.x >= window.width ||
++ this.position.y <= 0 ||
++ this.position.y >= window.height) {
++ this.direction.rotate(window.HALF_PI);
++ }
++ }
++
++ public boolean collided(Sprite obj) {
++ float distance = PVector.dist(this.getPosition(), obj.getPosition());
++ if (distance <= (this.getSize() + obj.getSize())) {
++ return true;
++ }
++ return false;
++ }
++
++ public void update() {
++// this.bounce();
++ this.position = this.getPosition().add(this.direction.copy().mult(speed));
++ }
++ public PVector getPosition() {
++ return position;
++ }
++
++ public Color getColor() {
++ return color;
++ }
++
++ public Window getWindow() {
++ return window;
++ }
+
++ public float getSize() {
++ return size;
+ }
+
+-
++ public float getSpeed() {
++ return speed;
++ }
++
++ public PVector getDirection() {
++ return direction;
++ }
++
++ public void setWindow(Window window) {
++ this.window = window;
++ }
++
++ public void setPosition(PVector position) {
++ this.position = position;
++ }
++
++ public void setColor(Color color) {
++ this.color = color;
++ }
++
++ public void setSpeed(float speed) {
++ this.speed = speed;
++ }
++
++ public void setSize(float size) {
++ this.size = size;
++ }
++
++ public void setDirection(PVector direction) {
++ this.direction = direction;
++ }
++
+ /**
+ * Compares this object with the specified object for order. Returns a
+ * negative integer, zero, or a positive integer as this object is less
+Index: datapirates/src/main/java/org/example/Player.java
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
+<+>package org.example;\r\n\r\nimport processing.core.PVector;\r\n\r\nimport java.awt.*;\r\nimport java.awt.event.KeyEvent;\r\n\r\npublic class Player extends Sprite {\r\n\r\n private Weapon weapon;\r\n\r\n public Player(PVector pos, PVector direction, float size, float speed, Color clr, Window scene) {\r\n super(pos, direction, size, speed, clr, scene);\r\n }\r\n\r\n\r\n public void move(KeyEvent event) {}\r\n\r\n public void shoot() {}\r\n\r\n}\r\n
+===================================================================
+diff --git a/datapirates/src/main/java/org/example/Player.java b/datapirates/src/main/java/org/example/Player.java
+--- a/datapirates/src/main/java/org/example/Player.java
++++ b/datapirates/src/main/java/org/example/Player.java
+@@ -2,20 +2,94 @@
+
+ import processing.core.PVector;
+
++import processing.core.PApplet;
++import processing.event.KeyEvent;
++
+ import java.awt.*;
+-import java.awt.event.KeyEvent;
+
+ public class Player extends Sprite {
+
+ private Weapon weapon;
+
+- public Player(PVector pos, PVector direction, float size, float speed, Color clr, Window scene) {
++ private static Player player;
++
++ private Player(PVector pos, PVector direction, float size, float speed, Color clr, Window scene) {
+ super(pos, direction, size, speed, clr, scene);
+ }
+
++ public static Player getInstance(PVector position, PVector direction, float size, float speed, Color color, Window window) {
++ if (player == null) {
++ player = new Player(position, direction, size, speed, color, window);
++ } else {
++ player.setPosition(position);
++ player.setDirection(direction);
++ player.setSize(size);
++ player.setSpeed(speed);
++ player.setColor(color);
++ player.setWindow(window);
++ }
++ return player;
++ }
++
++ @Override
++ public void update() {
++// super.update();
++ }
+
+- public void move(KeyEvent event) {}
++ public void draw() {
++ player.getWindow().pushStyle();
++ player.getWindow().fill(player.getColor().getRed(), player.getColor().getGreen(), player.getColor().getBlue());
++ float startx = player.getPosition().x - (player.getSize() / 2 * Math.abs(player.getDirection().y));
++ float starty = player.getPosition().y + (player.getDirection().x * -1 * player.getSize() / 2);
+
+- public void shoot() {}
++ float midx = player.getPosition().x + (player.getDirection().x * player.getSize() / 1);
++ float midy = player.getPosition().y + (player.getDirection().y * player.getSize() / 1);
+
++ float finalx = player.getPosition().x + (player.getSize() / 2 * Math.abs(player.getDirection().y));
++ float finaly = player.getPosition().y - (player.getDirection().x * -1 * player.getSize() / 2);
++
++ player.getWindow().triangle(
++ startx,starty,
++ midx,midy,finalx,finaly);
++ player.getWindow().popStyle();
++ }
++
++ public void move(float x, float y) {
++ player.setDirection(player.getPosition().mult(-1).add(new PVector(x, y)).normalize());
++ }
++
++ public void move(KeyEvent event) {
++ char key = event.getKey();
++ switch (key) {
++ case 'w':
++
++ player.setDirection(new PVector(0, -1));
++ break;
++ case 's':
++ player.setDirection(new PVector(0, 1));
++ break;
++ case 'a':
++ player.setDirection(new PVector(-1, 0));
++ break;
++ case 'd':
++ player.setDirection(new PVector(1, 0));
++ break;
++ default:
++ return;
++// System.out.println("Test");
++// break;
++ }
++ player.setPosition(player.getPosition().add(player.getDirection().copy().mult(player.getSpeed())));
++
++// .position = this.getPosition().add(this.direction.copy().mult(speed));
++ }
++
++
++ public void setWeapon(Weapon weapon) {
++ this.weapon = weapon;
++ }
++
++ public Weapon getWeapon() {
++ return weapon;
++ }
+ }
+Index: datapirates/src/main/java/org/example/Weapon.java
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
+<+>package org.example;\r\n\r\npublic interface Weapon {\r\n\r\n void levelUp();\r\n\r\n}\r\n
+===================================================================
+diff --git a/datapirates/src/main/java/org/example/Weapon.java b/datapirates/src/main/java/org/example/Weapon.java
+--- a/datapirates/src/main/java/org/example/Weapon.java
++++ b/datapirates/src/main/java/org/example/Weapon.java
+@@ -1,7 +1,48 @@
+ package org.example;
+
+-public interface Weapon {
++import java.awt.*;
++
++public class Weapon {
++
++ private Color bulletColor;
++
++ private int ammoCapacity;
++
++ private String model;
++
++ private int currentAmmo;
++
++ public Weapon(String name, Color bulletColor, int maxAmmo) {
++ model = name;
++ this.bulletColor = bulletColor;
++ ammoCapacity = maxAmmo;
++ currentAmmo = maxAmmo;
++ }
++ public void levelUp() {
+
+- void levelUp();
++ }
+
++ public void shoot() {
++ if (hasAmmo()) {
++ currentAmmo--;
++ }
++ }
++
++ public boolean hasAmmo() {
++ if (currentAmmo <= 0)
++ return false;
++ return true;
++ }
++
++ public void reload() {
++ currentAmmo = ammoCapacity;
++ }
++
++ public int getAmmoCapacity() {
++ return ammoCapacity;
++ }
++
++ public int getCurrentAmmo() {
++ return currentAmmo;
++ }
+ }
+Index: datapirates/src/main/java/org/example/Projectile.java
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
+<+>package org.example;\r\n\r\npublic class Projectile implements Weapon {\r\n\r\n private Sprite projectile;\r\n\r\n /**\r\n *\r\n */\r\n @Override\r\n public void levelUp() {\r\n }\r\n\r\n public void move() {}\r\n\r\n}\r\n
+===================================================================
+diff --git a/datapirates/src/main/java/org/example/Projectile.java b/datapirates/src/main/java/org/example/Projectile.java
+--- a/datapirates/src/main/java/org/example/Projectile.java
++++ b/datapirates/src/main/java/org/example/Projectile.java
+@@ -1,16 +1,35 @@
+ package org.example;
+
+-public class Projectile implements Weapon {
++import processing.core.PVector;
++
++import java.awt.*;
++
++public class Projectile extends Sprite{
+
+ private Sprite projectile;
+
+- /**
+- *
+- */
+- @Override
+- public void levelUp() {
++ public Projectile(PVector pos, PVector direction, float size, float speed, Color clr, Window scene) {
++ super(pos, direction, size, speed, clr, scene);
+ }
++
++//
++// public void move() {
++//
++// }
++
++}
+
+- public void move() {}
++class ProjectileManager {
++
++// private static Player player;
++//
++// private Weapon weapon;
++//
++// private Projectile projectile;
++//
++// public ProjectileManager(Player p) {
++// player = p;
++// }
++//
+
+ }
+Index: datapirates/src/main/java/org/example/Window.java
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
+<+>package org.example;\r\n\r\nimport processing.core.PApplet;\r\n\r\nimport java.awt.event.KeyEvent;\r\n\r\npublic class Window extends PApplet {\r\n\r\n protected Player player;\r\n\r\n private Timer timer;\r\n\r\n private int numEnemies;\r\n\r\n /* Min size of entities. */\r\n private int minSize;\r\n\r\n /* Max size of entities. */\r\n private int maxSize;\r\n int width = 1080;\r\n int height = 720;\r\n\r\n public void settings() {\r\n size(width, height);\r\n }\r\n public void setup() {\r\n settings();\r\n this.init();\r\n }\r\n\r\n public void init() {\r\n\r\n }\r\n\r\n @Override\r\n public void keyPressed(KeyEvent e) {\r\n super.keyPressed(e);\r\n }\r\n\r\n @Override\r\n public void mouseClicked() {\r\n super.mouseClicked();\r\n }\r\n\r\n @Override\r\n public void draw() {\r\n super.draw();\r\n }\r\n\r\n public void remove(Sprite s) {}\r\n\r\n public void removeBullet(Sprite b) {}\r\n}\r\n
+===================================================================
+diff --git a/datapirates/src/main/java/org/example/Window.java b/datapirates/src/main/java/org/example/Window.java
+--- a/datapirates/src/main/java/org/example/Window.java
++++ b/datapirates/src/main/java/org/example/Window.java
+@@ -1,8 +1,10 @@
+ package org.example;
+
+ import processing.core.PApplet;
++import processing.core.PVector;
++import processing.event.KeyEvent;
+
+-import java.awt.event.KeyEvent;
++import java.util.Map;
+
+ public class Window extends PApplet {
+
+@@ -10,44 +12,192 @@
+
+ private Timer timer;
+
+- private int numEnemies;
++ private int numEnemies = 1;
+
+ /* Min size of entities. */
+- private int minSize;
++ private int minSize = 9;
+
+ /* Max size of entities. */
+- private int maxSize;
++ private int maxSize = 20;
+ int width = 1080;
+- int height = 720;
++ int height = 520;
++ DataPiratesCollection dpC;
++ Score score;
++
+
+ public void settings() {
+ size(width, height);
+ }
++
+ public void setup() {
+- settings();
++// settings();
++ dpC = DataPiratesCollection.getInstance();
++ score = Score.getInstance();
++ EntityColor.setColors();
+ this.init();
+ }
+
+ public void init() {
++ Player p = Player.getInstance(
++ new PVector(this.width / 2,this.height / 2),
++ new PVector(0,1),
++ 40,
++ 10,
++ EntityColor.getSpriteColors().get("Player"),
++ this);
++// dpC.getEnemies().add(e);
++ player = p;
++ Weapon basic = new Weapon("Basic", EntityColor.getSpriteColors().get("Bullet"), 100);
++ player.setWeapon(basic);
++ dpC.getSprites().add(p);
++
++// PVector plyer = new PVector(player.getPosition().x, player.getPosition().y);
+
++
++ for (int i = 0; i < numEnemies; i++) {
++ PVector enemy = new PVector(random(0, this.width), random(0, this.height));
++ PVector enemyDirection = SpriteManager.calculateDirection(enemy, player.getPosition());
++ Sprite e = new Enemy(
++ enemy,
++ enemyDirection,
++ random(minSize, maxSize),
++ random(0,2),
++ EntityColor.getSpriteColors().get("Enemy"),
++ this
++ );
++ dpC.getEnemies().add(e);
++ }
++
++ dpC.getSprites().addAll(dpC.getEnemies());
+ }
+
+ @Override
+ public void keyPressed(KeyEvent e) {
+- super.keyPressed(e);
++ if (e.getKey() == 'r')
++ player.getWeapon().reload();
++ player.move(e);
+ }
+
+ @Override
+- public void mouseClicked() {
+- super.mouseClicked();
++ public void mousePressed() {
++ if (player.getWeapon().hasAmmo()) {
++ player.getWeapon().shoot();
++ // Direction Calculation
++ // src: https://processing.org/tutorials/pvector/#vectors-interactivity
++ PVector mouse = new PVector(mouseX, mouseY);
++ PVector dir = SpriteManager.calculateDirection(player.getPosition(), mouse);
++
++ Projectile projectile = new Projectile(player.getPosition().copy(), dir, 10, 5, EntityColor.getSpriteColors().get("Bullet"), this);
++ dpC.getSprites().add(projectile);
++ dpC.getBullets().add(projectile);
++ }
++ else {
++ textSize(30);
++ fill(EntityColor.getSpriteColors().get("Reload").getRed(), EntityColor.getSpriteColors().get("Reload").getGreen(), EntityColor.getSpriteColors().get("Reload").getBlue());
++ text("Reload!", player.getPosition().x + player.getSize(), player.getPosition().y + player.getSize());
++ }
+ }
+
+- @Override
++
++ /**
++ * Make this function only available to certain
++ * weapons.
++ */
++ public void mouseDragged() {
++ mousePressed();
++ }
++
+ public void draw() {
+- super.draw();
+- }
++ background(0);
++
++ // example texts
++
++ textSize(10);
++ fill(EntityColor.getSpriteColors().get("Text").getRed(), EntityColor.getSpriteColors().get("Text").getGreen(), EntityColor.getSpriteColors().get("Text").getBlue());
++ text("Score: " + score.getValue(), 40, 120);
++
++ textSize(30);
++ fill(EntityColor.getSpriteColors().get("Text").getRed(), EntityColor.getSpriteColors().get("Text").getGreen(), EntityColor.getSpriteColors().get("Text").getBlue());
++ text("Ammo: " + player.getWeapon().getCurrentAmmo() + " / " + player.getWeapon().getAmmoCapacity() + "", 40, 100);
++
++// textSize(30);
++// text("Ammo: ", 40, 80);
++// fill(EntityColor.getSpriteColors().get("Text").getRed(), EntityColor.getSpriteColors().get("Text").getGreen(), EntityColor.getSpriteColors().get("Text").getBlue());
++ dpC.getSprites().get(0).update();
++ dpC.getSprites().get(0).draw();
++// while (true) {
++ for (Sprite s : dpC.getSprites()) {
++ if (!(s instanceof Player)) {
++ if (s instanceof Enemy) {
++ PVector dir = SpriteManager.calculateDirection(s.getPosition(), player.getPosition());
++ s.setDirection(dir);
++ }
++ s.update();
++ s.draw();
++ }
++ }
++
++ // bullet vs enemy
++ for (Sprite bullet : dpC.getBullets()) {
++ for (Sprite enemy : dpC.getEnemies()) {
++ if (bullet.collided(enemy)) {
++ System.out.println("Killed an enemy!");
++ dpC.getRemove().put((Projectile) bullet, (Enemy) enemy);
++ score.setValue(score.getValue() + 1);
++ } else if (bullet.getPosition().x >= this.width || bullet.getPosition().y >= this.height) {
++ dpC.getOutOfBondsBullets().add((Projectile) bullet);
++ }
++ }
++ }
++
++ // player vs enemy
++ for (Sprite enemy : dpC.getEnemies()) {
++ if (player.collided(enemy)) {
++ setup();
++ }
++ }
++
++ // remove the collision between bullets and enemies
++ for (Map.Entry mapElement: dpC.getRemove().entrySet()) {
++ removeBullet(mapElement.getKey());
++ removeEnemies(mapElement.getValue());
++ }
+
+- public void remove(Sprite s) {}
++ // remove bullets that are out of bounds.
++ for (Projectile b : dpC.getOutOfBondsBullets()) {
++ removeBullet(b);
++ }
++ }
+
+- public void removeBullet(Sprite b) {}
++ /**
++ * Removes an enemy in the enemy
++ * and sprite list.
++ *
++ * @param s Enemy as a Sprite object.
++ */
++ public void removeEnemies(Sprite s) {
++ dpC.getEnemies().remove(s);
++ dpC.getSprites().remove(s);
++ }
++
++ /**
++ * Removes a bullet from the bullet
++ * and sprite list.
++ *
++ * @param b Bullet as a Sprite object.
++ */
++ public void removeBullet(Sprite b) {
++ dpC.getBullets().remove(b);
++ dpC.getSprites().remove(b);
++ }
++
++ /**
++ * Drives the program.
++ * @param args
++ */
++ public static void main(String[] args) {
++ String[] appletArgs = new String[]{"eatBubbles"};
++ Window eatBubbles = new Window();
++ PApplet.runSketch(appletArgs, eatBubbles);
++ }
+ }
+Index: datapirates/src/main/java/org/example/DataPiratesCollection.java
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
+<+>package org.example;\r\n\r\nimport java.util.ArrayList;\r\n\r\npublic class DataPiratesCollection {\r\n\r\n protected static ArrayList enemies;\r\n protected static ArrayList sprites;\r\n protected static ArrayList bullets;\r\n\r\n public static ArrayList getBullets() {\r\n return bullets;\r\n }\r\n\r\n public static ArrayList getEnemies() {\r\n return enemies;\r\n }\r\n\r\n public static ArrayList getSprites() {\r\n return sprites;\r\n }\r\n\r\n\r\n}\r\n
+===================================================================
+diff --git a/datapirates/src/main/java/org/example/DataPiratesCollection.java b/datapirates/src/main/java/org/example/DataPiratesCollection.java
+--- a/datapirates/src/main/java/org/example/DataPiratesCollection.java
++++ b/datapirates/src/main/java/org/example/DataPiratesCollection.java
+@@ -1,24 +1,73 @@
+ package org.example;
+
+ import java.util.ArrayList;
++import java.util.HashMap;
+
+ public class DataPiratesCollection {
+
+- protected static ArrayList enemies;
+- protected static ArrayList sprites;
+- protected static ArrayList bullets;
++ private ArrayList enemies;
++ private ArrayList sprites;
++ private ArrayList bullets;
++
++ private HashMap remove;
+
+- public static ArrayList getBullets() {
++ private ArrayList outOfBondsBullets;
++
++ private static DataPiratesCollection dpCollection;
++
++ public static DataPiratesCollection getInstance() {
++ if (dpCollection == null) {
++ dpCollection = new DataPiratesCollection();
++ }
++// if (dpCollection.getEnemies() == null && dpCollection.getSprites() == null && dpCollection.getBullets() == null && dpCollection.getRemove() == null) {
++ dpCollection.setEnemies(new ArrayList());
++ dpCollection.setSprites(new ArrayList());
++ dpCollection.setBullets(new ArrayList());
++ dpCollection.setRemove(new HashMap());
++ dpCollection.setOutOfBondsBullets(new ArrayList());
++// sprites = new ArrayList();
++// bullets = new ArrayList();
++// remove = new HashMap();
++// }
++ return dpCollection;
++ }
++ public ArrayList getBullets() {
+ return bullets;
+ }
+
+- public static ArrayList getEnemies() {
++ public ArrayList getEnemies() {
+ return enemies;
+ }
+
+- public static ArrayList getSprites() {
++ public ArrayList getSprites() {
+ return sprites;
+ }
+
++ public HashMap getRemove() {
++ return remove;
++ }
++
++ public ArrayList getOutOfBondsBullets() {
++ return outOfBondsBullets;
++ }
+
+-}
++ public void setSprites(ArrayList sprites) {
++ this.sprites = sprites;
++ }
++
++ public void setBullets(ArrayList bullets) {
++ this.bullets = bullets;
++ }
++
++ public void setEnemies(ArrayList enemies) {
++ this.enemies = enemies;
++ }
++
++ public void setRemove(HashMap remove) {
++ this.remove = remove;
++ }
++
++ public void setOutOfBondsBullets(ArrayList outOfBondsBullets) {
++ this.outOfBondsBullets = outOfBondsBullets;
++ }
++}
+\ No newline at end of file
diff --git a/.idea/shelf/Uncommitted_changes_before_Checkout_at_2023-02-19_3_37_p_m___Changes_.xml b/.idea/shelf/Uncommitted_changes_before_Checkout_at_2023-02-19_3_37_p_m___Changes_.xml
new file mode 100644
index 0000000..44873d0
--- /dev/null
+++ b/.idea/shelf/Uncommitted_changes_before_Checkout_at_2023-02-19_3_37_p_m___Changes_.xml
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/.idea/shelf/Uncommitted_changes_before_Update_at_2023_4_10_1_39_[Changes]/executionHistory.lock b/.idea/shelf/Uncommitted_changes_before_Update_at_2023_4_10_1_39_[Changes]/executionHistory.lock
new file mode 100644
index 0000000..b6547f0
Binary files /dev/null and b/.idea/shelf/Uncommitted_changes_before_Update_at_2023_4_10_1_39_[Changes]/executionHistory.lock differ
diff --git a/.idea/shelf/Uncommitted_changes_before_Update_at_2023_4_10_1_39_[Changes]/shelved.patch b/.idea/shelf/Uncommitted_changes_before_Update_at_2023_4_10_1_39_[Changes]/shelved.patch
new file mode 100644
index 0000000..a503f83
--- /dev/null
+++ b/.idea/shelf/Uncommitted_changes_before_Update_at_2023_4_10_1_39_[Changes]/shelved.patch
@@ -0,0 +1,160 @@
+Index: datapirates/src/main/java/org/example/database/config.json
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
+<+>{\"highscore\":6,\"id\":\"dpt090572z84\"}
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/datapirates/src/main/java/org/example/database/config.json b/datapirates/src/main/java/org/example/database/config.json
+--- a/datapirates/src/main/java/org/example/database/config.json (revision 7ec58d3d69fb7a945c48e4134571be1a373f2630)
++++ b/datapirates/src/main/java/org/example/database/config.json (date 1681111300458)
+@@ -1,1 +1,1 @@
+-{"highscore":6,"id":"dpt090572z84"}
+\ No newline at end of file
++{"highscore":194,"id":"dpt090572z84"}
+\ No newline at end of file
+Index: .idea/shelf/Uncommitted_changes_before_Update_at_2023_4_9_23_18__Changes_.xml
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/.idea/shelf/Uncommitted_changes_before_Update_at_2023_4_9_23_18__Changes_.xml b/.idea/shelf/Uncommitted_changes_before_Update_at_2023_4_9_23_18__Changes_.xml
+new file mode 100644
+--- /dev/null (date 1681107639284)
++++ b/.idea/shelf/Uncommitted_changes_before_Update_at_2023_4_9_23_18__Changes_.xml (date 1681107639284)
+@@ -0,0 +1,4 @@
++
++
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/ProjectPitch.md b/ProjectPitch.md
new file mode 100644
index 0000000..3875ed8
--- /dev/null
+++ b/ProjectPitch.md
@@ -0,0 +1,17 @@
+Introduction: Our project aims to create an exciting single-player video game where the player must survive against multiple enemies and defend themselves in a limited time. The player will have the opportunity to collect random weapons scattered throughout the map to help them in their survival journey.
+
+Problem Statement: The challenge in this project lies in efficiently organizing and coordinating different objects and classes.
+
+Solution: To overcome this challenge, we will use UML to design the structure of the game and effectively organize the objects and classes using Java Object Oriented programming.
+
+Benefits: This project will provide an opportunity for an integrative practice of Java programming, improving the members' understanding of class concepts.
+
+Methodology: We will use UML and Java Object Oriented programming to design and develop the game.
+
+Timeline: A detailed timeline with key milestones and deadlines will be created after careful planning and analysis.
+
+Budget: As this is a practice project, there will be no commercial budget involved, and the estimated cost is zero.
+
+Risks and Challenges: Potential risks include the possibility of design similarity, which we will mitigate by ensuring originality in our approach.
+
+Conclusion: Our project will provide an exciting and challenging experience for players and an integrative practice of Java programming for the members involved. The key features of the game include survival against multiple enemies, a limited time frame, and the ability to collect weapons for defense.
diff --git a/README.md b/README.md
index 39f2fd3..ffbe8dc 100644
--- a/README.md
+++ b/README.md
@@ -1,115 +1,44 @@
-# Project
-
-## Technical Project Requirements
-
-The minimum requirements for the project are outlined here to give you a starting point. Meeting the minimum requirements alone will not guarantee you a good mark. You are welcome to meet and exceed the minimum requirements if you have good, creative ideas and would like to discuss them with me.
-
-**Requirement 1**: The project must incorporate some visual interface using Processing.org libraries. All user interaction must be conducted via this interface.
-
-**Requirement 2**: The project must incorporate some kind of non-blocking concurrent/asynchronous processing that happens at regular intervals. For example, you might push or fetch data from in the background.
-
-**Requirement 3**: The project must incorporate some kind of non-trivial persistent data state that must be read, processed, and written at regular intervals. For example, you might save a game state in a JSON file. This may or may not be included with Requirement 2.
-
-**Requirement 4**: The project must incorporate some kind of self-managing custom iterable data structure. For example, you might have a collection of enemies that are added and deleted based on statistics maintained by the data structure.
-
-**Requirement 5**: The project must be well-documented, complete, and run without errors on final submission.
-
-## Project Pitch (group, 1%)
-
-The project pitch will be a short document that describes the kind of interactive application you would like to create with your group. The project pitch must include the following items:
-
-*One-liner*: One-sentence description of your project.
-*Outline*: 1-10 sentences that describe how your project will fulfill the project requirements.
-*Communication policies*: A description of how your group will meet, communicate, and make decisions (as per Lab 03).
-*Roles and responsibilities*: A description of each team member's jobs in the group.
-*Milestones*: A rough outline of the major project milestones that you expect to complete and your own estimated timeline. This can and will change, so do your best to estimate and plan for the milestones to change.
-
-Draft was due today, final due next lab. Submission here, on GitHub. Make a `.md` file that outlines the above.
-
-## Initial UML Diagrams (group, 1%)
-
-The initial UML diagrams will outline the class structure that your group will follow for the first milestone of the project. It must include the following items all classes that will be created by the group and important descriptive interfaces from either the Java library or created by the group. I expect that this will change significantly throughout the project, so it does not have to be perfect but it should be a best effort attempt. This is because you will use this to communicate with your group members about what to make. Therefore, the diagram should be *sufficiently complex* to give you a term's worth of work.
-
-Draft due next Lab, final due two labs from now. Submission here, on GitHub. Suggestion is to use a tool like [draw.io](https://app.diagrams.net/) but you may use whatever tool is most useful for you.
-
-## Initial GitHub Issues (group, 1%)
-
-The initial GitHub issues will be the tasks that are assigned to each of your group members at the beginning of the project. Every team member should have at least five issues to start (20-30 total). You will have to decide within your group how granular you want to make these issues.
-
-Issues will be tracked here, on GitHub.
-
-## Final Project Demo (group, 1%)
-
-The Final Project Demo will be a working version of your project that you will present to your lab section for review. The demo will be in lab, and will include a live demo of the working application, and a short code review. There are no slides required, but you should have practiced your demo to make sure it will run reasonably well. This will be during the last lab of class.
-
-No submission.
-
-## Final README.md (group, 1%)
-
-The Final README.md must give instructions on how to run your program, a list of contributions by each member, and any references/citations for code you may have used from elsewhere.
-
-Submission is here, on GitHub, in the `README.md` file.
-
-## Final Product (group, 5%)
-
-The Final Product will be evaluated for overall code design and documentation and evaluated on the same design principles as individual contributions. If you are below the 1000 line minimum contribution, your mark will be scaled down for this portion.
-
-Submission is here, on GitHub.
-
-## Code Contributions (individual, 15%)
-
-You will be expected to take on a significant individual contribution to the group project (at least 1000 lines of non-trivial code). It may be in a number of forms, but here are some examples:
-
-**Architect**: you are in charge of the high-level code structuring and organizing.
-
-**Test maker**: you are in charge of test coverage that supports other group members.
-
-**UI/UX lead**: you design and implement the user interface.
-
-**Backend**: you design and implement the data structures.
-
-**…??**: Make up your own depending on your use case, i.e., collision system designer, animation architect, async code wrangler.
-
-Contributions must be for functional, working Java code and must be continuous throughout the term. You may not, for example, push all of your changes at the end of term. Code will be marked on following good design principles, i.e., SOLID, design patterns, etc. You are encouraged to work together and use pair programming for components, but you will be marked on your contribution to your own modules individually.
-
-## Documentation Contributions (individual, 5%)
-
-Your code must be well-documented with fully-formed method signatures, comments, and necessary README or Wiki pages. This is further broken down into the following.
-
-### Initial individual pitch (1%)
-A description of your individual feature that you plan to implement.
-
-Due date TBD.
-
-### Initial individual UML Diagrams (1%)
-Any combination of sequence, communcation, or class diagrams that describe your feature's initial planned abilities.
-
-Due date TBD.
-
-### Documentation contributions (3%)
-Your personal feature documentation, wherever it happens to show up in the final documentation.
-
-Due with final submission.
-
-## Issues and Pull Request Contributions (individual, 5%)
-You must track your own work in the form of creating and closing GitHub issues, creating and reviewing pull requests, responding to issues that have been assigned to you, and creating issues that you assign to others (all within reason).
-
-# Errata
-The project MUST be managed here, in this GitHub repo. Nothing that happens outside of this GitHub repo will be trackable by me, therefore, it will not be marked or considered for marking.
-
-You must use the following branching structures:
-- `main` branch must always be working, tested, debugged, human-readable code.
-- `__` is the format for each ISSUE that you're working on. It should always be a branch off of `main`.
-- Every individual branch must regularly merge `main`, and it should be no more than a few days before your branch is either merged into `main` or deleted.
-
-You must use pull requests to manage your code integration:
-- make your branch from `main`, e.g., `git checkout -b pb_71_demo`
-- make your commits, e.g., `git add .` and `git commit -m "fixed issue 71 by reloading gradle for the 100th time"` and `git push origin pb_71_demo`.
-- merge `main` into your branch, and NOT the other way around. E.g., `git merge main`. YOU fix all the merge conflicts or problems that arise. Commit and push again.
-- go to GitHub.com and make a pull request
-- one other person (NOT YOU) needs to review the code and either approve or reject your changes with detailed line-by-line comments.
-- If needed, make the requested fixes and commit and push again.
-- the other person (NOT YOU) will merge your PR into `main`
-- the other person (NOT YOU) will delete your branch
-
-
+# **_Data Pirates_**
+
+
+## Description
+Data Pirates is a single-player 2D game where the player navigates through various worlds, fighting enemies and interacting with different elements in the environment. The game features smooth player movement, diagonal movement, and a variety of weapons and enemies.
+
+
+
+# Getting Started
+
+## Prerequisites
+Ensure you have the following software installed:
+
+- JDK 18
+
+- Processing 3.x
+
+## Running the game
+
+1. `Clone` the repository.
+2. `Open`the project in your favorite Java IDE.
+3. `Import` the necessary Processing libraries.
+4. Run the `Window.java` file to start the game.
+
+## How to Play
+**Start the game by descending from the first location.**
+- Move using the `W`, `A`, `S`, and `D` keys.
+- Shoot by pressing the `mouse keys` or `SPACE`.
+- Reload your weapon by pressing the `R` key.
+- Toggle the player's stat HUD by pressing the `C` key (only available in the **arena** world).
+## Controls
+- `W`: Move up
+- `A`: Move left
+- `S`: Move down
+- `D`: Move right
+- `R`: Reload weapon
+- `C`: Toggle player's stat HUD (arena world only)
+- `mouse keys` / `SPACE`: Shoot
+
+## Authors
+- Eric
+- Ning
+- Jack
+- Teddy
diff --git a/UML1.0.jpeg b/UML1.0.jpeg
new file mode 100644
index 0000000..43cdec0
Binary files /dev/null and b/UML1.0.jpeg differ
diff --git a/datapirates/.gradle/7.5.1/checksums/checksums.lock b/datapirates/.gradle/7.5.1/checksums/checksums.lock
new file mode 100644
index 0000000..6f0c27d
Binary files /dev/null and b/datapirates/.gradle/7.5.1/checksums/checksums.lock differ
diff --git a/datapirates/.gradle/7.5.1/checksums/md5-checksums.bin b/datapirates/.gradle/7.5.1/checksums/md5-checksums.bin
new file mode 100644
index 0000000..fd9e473
Binary files /dev/null and b/datapirates/.gradle/7.5.1/checksums/md5-checksums.bin differ
diff --git a/datapirates/.gradle/7.5.1/checksums/sha1-checksums.bin b/datapirates/.gradle/7.5.1/checksums/sha1-checksums.bin
new file mode 100644
index 0000000..356a4ab
Binary files /dev/null and b/datapirates/.gradle/7.5.1/checksums/sha1-checksums.bin differ
diff --git a/datapirates/.gradle/7.5.1/dependencies-accessors/dependencies-accessors.lock b/datapirates/.gradle/7.5.1/dependencies-accessors/dependencies-accessors.lock
new file mode 100644
index 0000000..334b236
Binary files /dev/null and b/datapirates/.gradle/7.5.1/dependencies-accessors/dependencies-accessors.lock differ
diff --git a/datapirates/.gradle/7.5.1/dependencies-accessors/gc.properties b/datapirates/.gradle/7.5.1/dependencies-accessors/gc.properties
new file mode 100644
index 0000000..e69de29
diff --git a/datapirates/.gradle/7.5.1/executionHistory/executionHistory.bin b/datapirates/.gradle/7.5.1/executionHistory/executionHistory.bin
new file mode 100644
index 0000000..e25d281
Binary files /dev/null and b/datapirates/.gradle/7.5.1/executionHistory/executionHistory.bin differ
diff --git a/datapirates/.gradle/7.5.1/executionHistory/executionHistory.lock b/datapirates/.gradle/7.5.1/executionHistory/executionHistory.lock
new file mode 100644
index 0000000..7ab2f70
Binary files /dev/null and b/datapirates/.gradle/7.5.1/executionHistory/executionHistory.lock differ
diff --git a/datapirates/.gradle/7.5.1/fileChanges/last-build.bin b/datapirates/.gradle/7.5.1/fileChanges/last-build.bin
new file mode 100644
index 0000000..f76dd23
Binary files /dev/null and b/datapirates/.gradle/7.5.1/fileChanges/last-build.bin differ
diff --git a/datapirates/.gradle/7.5.1/fileHashes/fileHashes.bin b/datapirates/.gradle/7.5.1/fileHashes/fileHashes.bin
new file mode 100644
index 0000000..886bbc3
Binary files /dev/null and b/datapirates/.gradle/7.5.1/fileHashes/fileHashes.bin differ
diff --git a/datapirates/.gradle/7.5.1/fileHashes/fileHashes.lock b/datapirates/.gradle/7.5.1/fileHashes/fileHashes.lock
new file mode 100644
index 0000000..0a378f2
Binary files /dev/null and b/datapirates/.gradle/7.5.1/fileHashes/fileHashes.lock differ
diff --git a/datapirates/.gradle/7.5.1/fileHashes/resourceHashesCache.bin b/datapirates/.gradle/7.5.1/fileHashes/resourceHashesCache.bin
new file mode 100644
index 0000000..3ed0eab
Binary files /dev/null and b/datapirates/.gradle/7.5.1/fileHashes/resourceHashesCache.bin differ
diff --git a/datapirates/.gradle/7.5.1/gc.properties b/datapirates/.gradle/7.5.1/gc.properties
new file mode 100644
index 0000000..e69de29
diff --git a/datapirates/.gradle/buildOutputCleanup/buildOutputCleanup.lock b/datapirates/.gradle/buildOutputCleanup/buildOutputCleanup.lock
new file mode 100644
index 0000000..0cebb2e
Binary files /dev/null and b/datapirates/.gradle/buildOutputCleanup/buildOutputCleanup.lock differ
diff --git a/datapirates/.gradle/buildOutputCleanup/cache.properties b/datapirates/.gradle/buildOutputCleanup/cache.properties
new file mode 100644
index 0000000..22f5ee6
--- /dev/null
+++ b/datapirates/.gradle/buildOutputCleanup/cache.properties
@@ -0,0 +1,2 @@
+#Sat Feb 18 09:15:02 PST 2023
+gradle.version=7.5.1
diff --git a/datapirates/.gradle/buildOutputCleanup/outputFiles.bin b/datapirates/.gradle/buildOutputCleanup/outputFiles.bin
new file mode 100644
index 0000000..04293d7
Binary files /dev/null and b/datapirates/.gradle/buildOutputCleanup/outputFiles.bin differ
diff --git a/datapirates/.gradle/file-system.probe b/datapirates/.gradle/file-system.probe
new file mode 100644
index 0000000..604bb8d
Binary files /dev/null and b/datapirates/.gradle/file-system.probe differ
diff --git a/datapirates/.gradle/vcs-1/gc.properties b/datapirates/.gradle/vcs-1/gc.properties
new file mode 100644
index 0000000..e69de29
diff --git a/datapirates/UML diagram b/datapirates/UML diagram
new file mode 100644
index 0000000..3476d45
--- /dev/null
+++ b/datapirates/UML diagram
@@ -0,0 +1 @@
+https://lucid.app/lucidchart/a19795ef-a477-47af-9b54-02133bf2b99e/edit?invitationId=inv_88da3721-c10f-4e3d-917e-01c0e868ec14&page=0_0#
\ No newline at end of file
diff --git a/datapirates/build.gradle b/datapirates/build.gradle
new file mode 100644
index 0000000..0f4ac24
--- /dev/null
+++ b/datapirates/build.gradle
@@ -0,0 +1,28 @@
+plugins {
+ id 'java'
+}
+
+group 'org.example'
+version '1.0-SNAPSHOT'
+
+repositories {
+ mavenCentral()
+ maven {
+ url 'https://repo.clojars.org'
+ name 'Clojars'
+ }
+}
+
+dependencies {
+ implementation 'org.processing:core:3.3.7'
+ implementation 'org.processing:processing-complete:3.3.7'
+ testImplementation 'org.junit.jupiter:junit-jupiter-api:5.9.2'
+ testImplementation project(path: ':')
+ testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.9.2'
+ implementation 'org.mongodb:mongodb-driver-sync:4.9.0'
+ implementation group: 'com.googlecode.json-simple', name: 'json-simple', version: '1.1.1'
+}
+
+test {
+ useJUnitPlatform()
+}
\ No newline at end of file
diff --git a/datapirates/build/reports/tests/test/classes/EnemyTest.html b/datapirates/build/reports/tests/test/classes/EnemyTest.html
new file mode 100644
index 0000000..4eefe11
--- /dev/null
+++ b/datapirates/build/reports/tests/test/classes/EnemyTest.html
@@ -0,0 +1,742 @@
+
+
+
+
+
+Test results - Class EnemyTest
+
+
+
+
+
+
java.lang.RuntimeException: Files must be loaded inside setup() or after it has been called.
+ at processing.core.PApplet.createInputRaw(PApplet.java:7030)
+ at processing.core.PApplet.createInput(PApplet.java:7002)
+ at processing.core.PApplet.loadImageIO(PApplet.java:5639)
+ at processing.core.PApplet.loadImage(PApplet.java:5486)
+ at processing.core.PApplet.loadImage(PApplet.java:5350)
+ at org.example.spriteClasses.GifManager.setSprites(GifManager.java:74)
+ at org.example.spriteClasses.GifManager.<init>(GifManager.java:36)
+ at org.example.spriteClasses.Enemy.<init>(Enemy.java:45)
+ at EnemyTest.setUp(EnemyTest.java:24)
+ at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+ at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
+ at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+ at java.base/java.lang.reflect.Method.invoke(Method.java:568)
+ at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:727)
+ at org.junit.jupiter.engine.execution.MethodInvocation.proceed(MethodInvocation.java:60)
+ at org.junit.jupiter.engine.execution.InvocationInterceptorChain$ValidatingInvocation.proceed(InvocationInterceptorChain.java:131)
+ at org.junit.jupiter.engine.extension.TimeoutExtension.intercept(TimeoutExtension.java:156)
+ at org.junit.jupiter.engine.extension.TimeoutExtension.interceptLifecycleMethod(TimeoutExtension.java:128)
+ at org.junit.jupiter.engine.extension.TimeoutExtension.interceptBeforeEachMethod(TimeoutExtension.java:78)
+ at org.junit.jupiter.engine.execution.InterceptingExecutableInvoker$ReflectiveInterceptorCall.lambda$ofVoidMethod$0(InterceptingExecutableInvoker.java:103)
+ at org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.lambda$invoke$0(InterceptingExecutableInvoker.java:93)
+ at org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106)
+ at org.junit.jupiter.engine.execution.InvocationInterceptorChain.proceed(InvocationInterceptorChain.java:64)
+ at org.junit.jupiter.engine.execution.InvocationInterceptorChain.chainAndInvoke(InvocationInterceptorChain.java:45)
+ at org.junit.jupiter.engine.execution.InvocationInterceptorChain.invoke(InvocationInterceptorChain.java:37)
+ at org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.invoke(InterceptingExecutableInvoker.java:92)
+ at org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.invoke(InterceptingExecutableInvoker.java:86)
+ at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.invokeMethodInExtensionContext(ClassBasedTestDescriptor.java:520)
+ at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.lambda$synthesizeBeforeEachMethodAdapter$23(ClassBasedTestDescriptor.java:505)
+ at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeBeforeEachMethods$3(TestMethodTestDescriptor.java:174)
+ at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeBeforeMethodsOrCallbacksUntilExceptionOccurs$6(TestMethodTestDescriptor.java:202)
+ at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+ at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeBeforeMethodsOrCallbacksUntilExceptionOccurs(TestMethodTestDescriptor.java:202)
+ at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeBeforeEachMethods(TestMethodTestDescriptor.java:171)
+ at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:134)
+ at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:68)
+ at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:151)
+ at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+ at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
+ at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
+ at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
+ at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+ at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
+ at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
+ at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
+ at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41)
+ at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155)
+ at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+ at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
+ at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
+ at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
+ at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+ at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
+ at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
+ at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
+ at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41)
+ at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155)
+ at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+ at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
+ at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
+ at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
+ at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+ at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
+ at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
+ at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:35)
+ at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)
+ at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:54)
+ at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:107)
+ at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:88)
+ at org.junit.platform.launcher.core.EngineExecutionOrchestrator.lambda$execute$0(EngineExecutionOrchestrator.java:54)
+ at org.junit.platform.launcher.core.EngineExecutionOrchestrator.withInterceptedStreams(EngineExecutionOrchestrator.java:67)
+ at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:52)
+ at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:114)
+ at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:86)
+ at org.junit.platform.launcher.core.DefaultLauncherSession$DelegatingLauncher.execute(DefaultLauncherSession.java:86)
+ at org.junit.platform.launcher.core.SessionPerRequestLauncher.execute(SessionPerRequestLauncher.java:53)
+ at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.processAllTestClasses(JUnitPlatformTestClassProcessor.java:99)
+ at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.access$000(JUnitPlatformTestClassProcessor.java:79)
+ at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor.stop(JUnitPlatformTestClassProcessor.java:75)
+ at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.stop(SuiteTestClassProcessor.java:61)
+ at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+ at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
+ at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+ at java.base/java.lang.reflect.Method.invoke(Method.java:568)
+ at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:36)
+ at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
+ at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:33)
+ at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:94)
+ at jdk.proxy1/jdk.proxy1.$Proxy2.stop(Unknown Source)
+ at org.gradle.api.internal.tasks.testing.worker.TestWorker$3.run(TestWorker.java:193)
+ at org.gradle.api.internal.tasks.testing.worker.TestWorker.executeAndMaintainThreadName(TestWorker.java:129)
+ at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:100)
+ at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:60)
+ at org.gradle.process.internal.worker.child.ActionExecutionWorker.execute(ActionExecutionWorker.java:56)
+ at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:133)
+ at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:71)
+ at worker.org.gradle.process.internal.worker.GradleWorkerMain.run(GradleWorkerMain.java:69)
+ at worker.org.gradle.process.internal.worker.GradleWorkerMain.main(GradleWorkerMain.java:74)
+
+
+
+
+
+
testEnemyStats()
+
+
java.lang.RuntimeException: Files must be loaded inside setup() or after it has been called.
+ at processing.core.PApplet.createInputRaw(PApplet.java:7030)
+ at processing.core.PApplet.createInput(PApplet.java:7002)
+ at processing.core.PApplet.loadImageIO(PApplet.java:5639)
+ at processing.core.PApplet.loadImage(PApplet.java:5486)
+ at processing.core.PApplet.loadImage(PApplet.java:5350)
+ at org.example.spriteClasses.GifManager.setSprites(GifManager.java:74)
+ at org.example.spriteClasses.GifManager.<init>(GifManager.java:36)
+ at org.example.spriteClasses.Enemy.<init>(Enemy.java:45)
+ at EnemyTest.setUp(EnemyTest.java:24)
+ at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+ at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
+ at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+ at java.base/java.lang.reflect.Method.invoke(Method.java:568)
+ at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:727)
+ at org.junit.jupiter.engine.execution.MethodInvocation.proceed(MethodInvocation.java:60)
+ at org.junit.jupiter.engine.execution.InvocationInterceptorChain$ValidatingInvocation.proceed(InvocationInterceptorChain.java:131)
+ at org.junit.jupiter.engine.extension.TimeoutExtension.intercept(TimeoutExtension.java:156)
+ at org.junit.jupiter.engine.extension.TimeoutExtension.interceptLifecycleMethod(TimeoutExtension.java:128)
+ at org.junit.jupiter.engine.extension.TimeoutExtension.interceptBeforeEachMethod(TimeoutExtension.java:78)
+ at org.junit.jupiter.engine.execution.InterceptingExecutableInvoker$ReflectiveInterceptorCall.lambda$ofVoidMethod$0(InterceptingExecutableInvoker.java:103)
+ at org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.lambda$invoke$0(InterceptingExecutableInvoker.java:93)
+ at org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106)
+ at org.junit.jupiter.engine.execution.InvocationInterceptorChain.proceed(InvocationInterceptorChain.java:64)
+ at org.junit.jupiter.engine.execution.InvocationInterceptorChain.chainAndInvoke(InvocationInterceptorChain.java:45)
+ at org.junit.jupiter.engine.execution.InvocationInterceptorChain.invoke(InvocationInterceptorChain.java:37)
+ at org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.invoke(InterceptingExecutableInvoker.java:92)
+ at org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.invoke(InterceptingExecutableInvoker.java:86)
+ at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.invokeMethodInExtensionContext(ClassBasedTestDescriptor.java:520)
+ at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.lambda$synthesizeBeforeEachMethodAdapter$23(ClassBasedTestDescriptor.java:505)
+ at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeBeforeEachMethods$3(TestMethodTestDescriptor.java:174)
+ at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeBeforeMethodsOrCallbacksUntilExceptionOccurs$6(TestMethodTestDescriptor.java:202)
+ at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+ at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeBeforeMethodsOrCallbacksUntilExceptionOccurs(TestMethodTestDescriptor.java:202)
+ at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeBeforeEachMethods(TestMethodTestDescriptor.java:171)
+ at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:134)
+ at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:68)
+ at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:151)
+ at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+ at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
+ at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
+ at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
+ at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+ at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
+ at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
+ at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
+ at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41)
+ at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155)
+ at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+ at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
+ at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
+ at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
+ at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+ at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
+ at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
+ at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
+ at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41)
+ at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155)
+ at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+ at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
+ at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
+ at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
+ at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+ at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
+ at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
+ at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:35)
+ at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)
+ at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:54)
+ at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:107)
+ at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:88)
+ at org.junit.platform.launcher.core.EngineExecutionOrchestrator.lambda$execute$0(EngineExecutionOrchestrator.java:54)
+ at org.junit.platform.launcher.core.EngineExecutionOrchestrator.withInterceptedStreams(EngineExecutionOrchestrator.java:67)
+ at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:52)
+ at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:114)
+ at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:86)
+ at org.junit.platform.launcher.core.DefaultLauncherSession$DelegatingLauncher.execute(DefaultLauncherSession.java:86)
+ at org.junit.platform.launcher.core.SessionPerRequestLauncher.execute(SessionPerRequestLauncher.java:53)
+ at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.processAllTestClasses(JUnitPlatformTestClassProcessor.java:99)
+ at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.access$000(JUnitPlatformTestClassProcessor.java:79)
+ at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor.stop(JUnitPlatformTestClassProcessor.java:75)
+ at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.stop(SuiteTestClassProcessor.java:61)
+ at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+ at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
+ at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+ at java.base/java.lang.reflect.Method.invoke(Method.java:568)
+ at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:36)
+ at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
+ at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:33)
+ at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:94)
+ at jdk.proxy1/jdk.proxy1.$Proxy2.stop(Unknown Source)
+ at org.gradle.api.internal.tasks.testing.worker.TestWorker$3.run(TestWorker.java:193)
+ at org.gradle.api.internal.tasks.testing.worker.TestWorker.executeAndMaintainThreadName(TestWorker.java:129)
+ at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:100)
+ at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:60)
+ at org.gradle.process.internal.worker.child.ActionExecutionWorker.execute(ActionExecutionWorker.java:56)
+ at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:133)
+ at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:71)
+ at worker.org.gradle.process.internal.worker.GradleWorkerMain.run(GradleWorkerMain.java:69)
+ at worker.org.gradle.process.internal.worker.GradleWorkerMain.main(GradleWorkerMain.java:74)
+
+
+
+
+
+
testEnemyUpdate()
+
+
java.lang.RuntimeException: Files must be loaded inside setup() or after it has been called.
+ at processing.core.PApplet.createInputRaw(PApplet.java:7030)
+ at processing.core.PApplet.createInput(PApplet.java:7002)
+ at processing.core.PApplet.loadImageIO(PApplet.java:5639)
+ at processing.core.PApplet.loadImage(PApplet.java:5486)
+ at processing.core.PApplet.loadImage(PApplet.java:5350)
+ at org.example.spriteClasses.GifManager.setSprites(GifManager.java:74)
+ at org.example.spriteClasses.GifManager.<init>(GifManager.java:36)
+ at org.example.spriteClasses.Enemy.<init>(Enemy.java:45)
+ at EnemyTest.setUp(EnemyTest.java:24)
+ at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+ at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
+ at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+ at java.base/java.lang.reflect.Method.invoke(Method.java:568)
+ at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:727)
+ at org.junit.jupiter.engine.execution.MethodInvocation.proceed(MethodInvocation.java:60)
+ at org.junit.jupiter.engine.execution.InvocationInterceptorChain$ValidatingInvocation.proceed(InvocationInterceptorChain.java:131)
+ at org.junit.jupiter.engine.extension.TimeoutExtension.intercept(TimeoutExtension.java:156)
+ at org.junit.jupiter.engine.extension.TimeoutExtension.interceptLifecycleMethod(TimeoutExtension.java:128)
+ at org.junit.jupiter.engine.extension.TimeoutExtension.interceptBeforeEachMethod(TimeoutExtension.java:78)
+ at org.junit.jupiter.engine.execution.InterceptingExecutableInvoker$ReflectiveInterceptorCall.lambda$ofVoidMethod$0(InterceptingExecutableInvoker.java:103)
+ at org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.lambda$invoke$0(InterceptingExecutableInvoker.java:93)
+ at org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106)
+ at org.junit.jupiter.engine.execution.InvocationInterceptorChain.proceed(InvocationInterceptorChain.java:64)
+ at org.junit.jupiter.engine.execution.InvocationInterceptorChain.chainAndInvoke(InvocationInterceptorChain.java:45)
+ at org.junit.jupiter.engine.execution.InvocationInterceptorChain.invoke(InvocationInterceptorChain.java:37)
+ at org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.invoke(InterceptingExecutableInvoker.java:92)
+ at org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.invoke(InterceptingExecutableInvoker.java:86)
+ at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.invokeMethodInExtensionContext(ClassBasedTestDescriptor.java:520)
+ at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.lambda$synthesizeBeforeEachMethodAdapter$23(ClassBasedTestDescriptor.java:505)
+ at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeBeforeEachMethods$3(TestMethodTestDescriptor.java:174)
+ at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeBeforeMethodsOrCallbacksUntilExceptionOccurs$6(TestMethodTestDescriptor.java:202)
+ at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+ at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeBeforeMethodsOrCallbacksUntilExceptionOccurs(TestMethodTestDescriptor.java:202)
+ at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeBeforeEachMethods(TestMethodTestDescriptor.java:171)
+ at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:134)
+ at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:68)
+ at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:151)
+ at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+ at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
+ at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
+ at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
+ at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+ at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
+ at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
+ at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
+ at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41)
+ at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155)
+ at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+ at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
+ at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
+ at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
+ at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+ at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
+ at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
+ at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
+ at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41)
+ at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155)
+ at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+ at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
+ at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
+ at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
+ at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+ at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
+ at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
+ at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:35)
+ at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)
+ at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:54)
+ at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:107)
+ at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:88)
+ at org.junit.platform.launcher.core.EngineExecutionOrchestrator.lambda$execute$0(EngineExecutionOrchestrator.java:54)
+ at org.junit.platform.launcher.core.EngineExecutionOrchestrator.withInterceptedStreams(EngineExecutionOrchestrator.java:67)
+ at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:52)
+ at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:114)
+ at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:86)
+ at org.junit.platform.launcher.core.DefaultLauncherSession$DelegatingLauncher.execute(DefaultLauncherSession.java:86)
+ at org.junit.platform.launcher.core.SessionPerRequestLauncher.execute(SessionPerRequestLauncher.java:53)
+ at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.processAllTestClasses(JUnitPlatformTestClassProcessor.java:99)
+ at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.access$000(JUnitPlatformTestClassProcessor.java:79)
+ at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor.stop(JUnitPlatformTestClassProcessor.java:75)
+ at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.stop(SuiteTestClassProcessor.java:61)
+ at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+ at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
+ at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+ at java.base/java.lang.reflect.Method.invoke(Method.java:568)
+ at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:36)
+ at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
+ at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:33)
+ at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:94)
+ at jdk.proxy1/jdk.proxy1.$Proxy2.stop(Unknown Source)
+ at org.gradle.api.internal.tasks.testing.worker.TestWorker$3.run(TestWorker.java:193)
+ at org.gradle.api.internal.tasks.testing.worker.TestWorker.executeAndMaintainThreadName(TestWorker.java:129)
+ at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:100)
+ at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:60)
+ at org.gradle.process.internal.worker.child.ActionExecutionWorker.execute(ActionExecutionWorker.java:56)
+ at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:133)
+ at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:71)
+ at worker.org.gradle.process.internal.worker.GradleWorkerMain.run(GradleWorkerMain.java:69)
+ at worker.org.gradle.process.internal.worker.GradleWorkerMain.main(GradleWorkerMain.java:74)
+
+
+
+
+
+
Tests
+
+
+
+
Test
+
Duration
+
Result
+
+
+
+
testEnemyCreation()
+
0.005s
+
failed
+
+
+
testEnemyStats()
+
0.006s
+
failed
+
+
+
testEnemyUpdate()
+
0.105s
+
failed
+
+
+
+
+
Standard error
+
+
The sketch path is not set.
+java.lang.RuntimeException: Files must be loaded inside setup() or after it has been called.
+ at processing.core.PApplet.createInputRaw(PApplet.java:7030)
+ at processing.core.PApplet.createInput(PApplet.java:7002)
+ at processing.core.PApplet.loadBytes(PApplet.java:7292)
+ at processing.core.PApplet.loadImage(PApplet.java:5428)
+ at processing.core.PApplet.loadImage(PApplet.java:5350)
+ at org.example.spriteClasses.GifManager.setSprites(GifManager.java:74)
+ at org.example.spriteClasses.GifManager.<init>(GifManager.java:36)
+ at org.example.spriteClasses.Enemy.<init>(Enemy.java:45)
+ at EnemyTest.setUp(EnemyTest.java:24)
+ at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+ at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
+ at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+ at java.base/java.lang.reflect.Method.invoke(Method.java:568)
+ at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:727)
+ at org.junit.jupiter.engine.execution.MethodInvocation.proceed(MethodInvocation.java:60)
+ at org.junit.jupiter.engine.execution.InvocationInterceptorChain$ValidatingInvocation.proceed(InvocationInterceptorChain.java:131)
+ at org.junit.jupiter.engine.extension.TimeoutExtension.intercept(TimeoutExtension.java:156)
+ at org.junit.jupiter.engine.extension.TimeoutExtension.interceptLifecycleMethod(TimeoutExtension.java:128)
+ at org.junit.jupiter.engine.extension.TimeoutExtension.interceptBeforeEachMethod(TimeoutExtension.java:78)
+ at org.junit.jupiter.engine.execution.InterceptingExecutableInvoker$ReflectiveInterceptorCall.lambda$ofVoidMethod$0(InterceptingExecutableInvoker.java:103)
+ at org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.lambda$invoke$0(InterceptingExecutableInvoker.java:93)
+ at org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106)
+ at org.junit.jupiter.engine.execution.InvocationInterceptorChain.proceed(InvocationInterceptorChain.java:64)
+ at org.junit.jupiter.engine.execution.InvocationInterceptorChain.chainAndInvoke(InvocationInterceptorChain.java:45)
+ at org.junit.jupiter.engine.execution.InvocationInterceptorChain.invoke(InvocationInterceptorChain.java:37)
+ at org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.invoke(InterceptingExecutableInvoker.java:92)
+ at org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.invoke(InterceptingExecutableInvoker.java:86)
+ at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.invokeMethodInExtensionContext(ClassBasedTestDescriptor.java:520)
+ at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.lambda$synthesizeBeforeEachMethodAdapter$23(ClassBasedTestDescriptor.java:505)
+ at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeBeforeEachMethods$3(TestMethodTestDescriptor.java:174)
+ at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeBeforeMethodsOrCallbacksUntilExceptionOccurs$6(TestMethodTestDescriptor.java:202)
+ at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+ at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeBeforeMethodsOrCallbacksUntilExceptionOccurs(TestMethodTestDescriptor.java:202)
+ at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeBeforeEachMethods(TestMethodTestDescriptor.java:171)
+ at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:134)
+ at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:68)
+ at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:151)
+ at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+ at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
+ at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
+ at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
+ at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+ at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
+ at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
+ at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
+ at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41)
+ at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155)
+ at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+ at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
+ at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
+ at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
+ at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+ at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
+ at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
+ at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
+ at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41)
+ at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155)
+ at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+ at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
+ at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
+ at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
+ at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+ at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
+ at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
+ at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:35)
+ at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)
+ at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:54)
+ at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:107)
+ at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:88)
+ at org.junit.platform.launcher.core.EngineExecutionOrchestrator.lambda$execute$0(EngineExecutionOrchestrator.java:54)
+ at org.junit.platform.launcher.core.EngineExecutionOrchestrator.withInterceptedStreams(EngineExecutionOrchestrator.java:67)
+ at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:52)
+ at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:114)
+ at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:86)
+ at org.junit.platform.launcher.core.DefaultLauncherSession$DelegatingLauncher.execute(DefaultLauncherSession.java:86)
+ at org.junit.platform.launcher.core.SessionPerRequestLauncher.execute(SessionPerRequestLauncher.java:53)
+ at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.processAllTestClasses(JUnitPlatformTestClassProcessor.java:99)
+ at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.access$000(JUnitPlatformTestClassProcessor.java:79)
+ at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor.stop(JUnitPlatformTestClassProcessor.java:75)
+ at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.stop(SuiteTestClassProcessor.java:61)
+ at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+ at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
+ at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+ at java.base/java.lang.reflect.Method.invoke(Method.java:568)
+ at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:36)
+ at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
+ at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:33)
+ at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:94)
+ at jdk.proxy1/jdk.proxy1.$Proxy2.stop(Unknown Source)
+ at org.gradle.api.internal.tasks.testing.worker.TestWorker$3.run(TestWorker.java:193)
+ at org.gradle.api.internal.tasks.testing.worker.TestWorker.executeAndMaintainThreadName(TestWorker.java:129)
+ at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:100)
+ at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:60)
+ at org.gradle.process.internal.worker.child.ActionExecutionWorker.execute(ActionExecutionWorker.java:56)
+ at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:133)
+ at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:71)
+ at worker.org.gradle.process.internal.worker.GradleWorkerMain.run(GradleWorkerMain.java:69)
+ at worker.org.gradle.process.internal.worker.GradleWorkerMain.main(GradleWorkerMain.java:74)
+The sketch path is not set.
+The sketch path is not set.
+java.lang.RuntimeException: Files must be loaded inside setup() or after it has been called.
+ at processing.core.PApplet.createInputRaw(PApplet.java:7030)
+ at processing.core.PApplet.createInput(PApplet.java:7002)
+ at processing.core.PApplet.loadBytes(PApplet.java:7292)
+ at processing.core.PApplet.loadImage(PApplet.java:5428)
+ at processing.core.PApplet.loadImage(PApplet.java:5350)
+ at org.example.spriteClasses.GifManager.setSprites(GifManager.java:74)
+ at org.example.spriteClasses.GifManager.<init>(GifManager.java:36)
+ at org.example.spriteClasses.Enemy.<init>(Enemy.java:45)
+ at EnemyTest.setUp(EnemyTest.java:24)
+ at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+ at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
+ at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+ at java.base/java.lang.reflect.Method.invoke(Method.java:568)
+ at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:727)
+ at org.junit.jupiter.engine.execution.MethodInvocation.proceed(MethodInvocation.java:60)
+ at org.junit.jupiter.engine.execution.InvocationInterceptorChain$ValidatingInvocation.proceed(InvocationInterceptorChain.java:131)
+ at org.junit.jupiter.engine.extension.TimeoutExtension.intercept(TimeoutExtension.java:156)
+ at org.junit.jupiter.engine.extension.TimeoutExtension.interceptLifecycleMethod(TimeoutExtension.java:128)
+ at org.junit.jupiter.engine.extension.TimeoutExtension.interceptBeforeEachMethod(TimeoutExtension.java:78)
+ at org.junit.jupiter.engine.execution.InterceptingExecutableInvoker$ReflectiveInterceptorCall.lambda$ofVoidMethod$0(InterceptingExecutableInvoker.java:103)
+ at org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.lambda$invoke$0(InterceptingExecutableInvoker.java:93)
+ at org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106)
+ at org.junit.jupiter.engine.execution.InvocationInterceptorChain.proceed(InvocationInterceptorChain.java:64)
+ at org.junit.jupiter.engine.execution.InvocationInterceptorChain.chainAndInvoke(InvocationInterceptorChain.java:45)
+ at org.junit.jupiter.engine.execution.InvocationInterceptorChain.invoke(InvocationInterceptorChain.java:37)
+ at org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.invoke(InterceptingExecutableInvoker.java:92)
+ at org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.invoke(InterceptingExecutableInvoker.java:86)
+ at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.invokeMethodInExtensionContext(ClassBasedTestDescriptor.java:520)
+ at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.lambda$synthesizeBeforeEachMethodAdapter$23(ClassBasedTestDescriptor.java:505)
+ at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeBeforeEachMethods$3(TestMethodTestDescriptor.java:174)
+ at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeBeforeMethodsOrCallbacksUntilExceptionOccurs$6(TestMethodTestDescriptor.java:202)
+ at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+ at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeBeforeMethodsOrCallbacksUntilExceptionOccurs(TestMethodTestDescriptor.java:202)
+ at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeBeforeEachMethods(TestMethodTestDescriptor.java:171)
+ at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:134)
+ at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:68)
+ at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:151)
+ at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+ at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
+ at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
+ at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
+ at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+ at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
+ at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
+ at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
+ at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41)
+ at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155)
+ at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+ at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
+ at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
+ at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
+ at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+ at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
+ at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
+ at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
+ at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41)
+ at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155)
+ at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+ at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
+ at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
+ at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
+ at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+ at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
+ at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
+ at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:35)
+ at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)
+ at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:54)
+ at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:107)
+ at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:88)
+ at org.junit.platform.launcher.core.EngineExecutionOrchestrator.lambda$execute$0(EngineExecutionOrchestrator.java:54)
+ at org.junit.platform.launcher.core.EngineExecutionOrchestrator.withInterceptedStreams(EngineExecutionOrchestrator.java:67)
+ at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:52)
+ at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:114)
+ at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:86)
+ at org.junit.platform.launcher.core.DefaultLauncherSession$DelegatingLauncher.execute(DefaultLauncherSession.java:86)
+ at org.junit.platform.launcher.core.SessionPerRequestLauncher.execute(SessionPerRequestLauncher.java:53)
+ at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.processAllTestClasses(JUnitPlatformTestClassProcessor.java:99)
+ at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.access$000(JUnitPlatformTestClassProcessor.java:79)
+ at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor.stop(JUnitPlatformTestClassProcessor.java:75)
+ at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.stop(SuiteTestClassProcessor.java:61)
+ at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+ at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
+ at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+ at java.base/java.lang.reflect.Method.invoke(Method.java:568)
+ at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:36)
+ at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
+ at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:33)
+ at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:94)
+ at jdk.proxy1/jdk.proxy1.$Proxy2.stop(Unknown Source)
+ at org.gradle.api.internal.tasks.testing.worker.TestWorker$3.run(TestWorker.java:193)
+ at org.gradle.api.internal.tasks.testing.worker.TestWorker.executeAndMaintainThreadName(TestWorker.java:129)
+ at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:100)
+ at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:60)
+ at org.gradle.process.internal.worker.child.ActionExecutionWorker.execute(ActionExecutionWorker.java:56)
+ at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:133)
+ at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:71)
+ at worker.org.gradle.process.internal.worker.GradleWorkerMain.run(GradleWorkerMain.java:69)
+ at worker.org.gradle.process.internal.worker.GradleWorkerMain.main(GradleWorkerMain.java:74)
+The sketch path is not set.
+The sketch path is not set.
+java.lang.RuntimeException: Files must be loaded inside setup() or after it has been called.
+ at processing.core.PApplet.createInputRaw(PApplet.java:7030)
+ at processing.core.PApplet.createInput(PApplet.java:7002)
+ at processing.core.PApplet.loadBytes(PApplet.java:7292)
+ at processing.core.PApplet.loadImage(PApplet.java:5428)
+ at processing.core.PApplet.loadImage(PApplet.java:5350)
+ at org.example.spriteClasses.GifManager.setSprites(GifManager.java:74)
+ at org.example.spriteClasses.GifManager.<init>(GifManager.java:36)
+ at org.example.spriteClasses.Enemy.<init>(Enemy.java:45)
+ at EnemyTest.setUp(EnemyTest.java:24)
+ at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+ at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
+ at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+ at java.base/java.lang.reflect.Method.invoke(Method.java:568)
+ at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:727)
+ at org.junit.jupiter.engine.execution.MethodInvocation.proceed(MethodInvocation.java:60)
+ at org.junit.jupiter.engine.execution.InvocationInterceptorChain$ValidatingInvocation.proceed(InvocationInterceptorChain.java:131)
+ at org.junit.jupiter.engine.extension.TimeoutExtension.intercept(TimeoutExtension.java:156)
+ at org.junit.jupiter.engine.extension.TimeoutExtension.interceptLifecycleMethod(TimeoutExtension.java:128)
+ at org.junit.jupiter.engine.extension.TimeoutExtension.interceptBeforeEachMethod(TimeoutExtension.java:78)
+ at org.junit.jupiter.engine.execution.InterceptingExecutableInvoker$ReflectiveInterceptorCall.lambda$ofVoidMethod$0(InterceptingExecutableInvoker.java:103)
+ at org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.lambda$invoke$0(InterceptingExecutableInvoker.java:93)
+ at org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106)
+ at org.junit.jupiter.engine.execution.InvocationInterceptorChain.proceed(InvocationInterceptorChain.java:64)
+ at org.junit.jupiter.engine.execution.InvocationInterceptorChain.chainAndInvoke(InvocationInterceptorChain.java:45)
+ at org.junit.jupiter.engine.execution.InvocationInterceptorChain.invoke(InvocationInterceptorChain.java:37)
+ at org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.invoke(InterceptingExecutableInvoker.java:92)
+ at org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.invoke(InterceptingExecutableInvoker.java:86)
+ at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.invokeMethodInExtensionContext(ClassBasedTestDescriptor.java:520)
+ at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.lambda$synthesizeBeforeEachMethodAdapter$23(ClassBasedTestDescriptor.java:505)
+ at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeBeforeEachMethods$3(TestMethodTestDescriptor.java:174)
+ at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeBeforeMethodsOrCallbacksUntilExceptionOccurs$6(TestMethodTestDescriptor.java:202)
+ at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+ at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeBeforeMethodsOrCallbacksUntilExceptionOccurs(TestMethodTestDescriptor.java:202)
+ at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeBeforeEachMethods(TestMethodTestDescriptor.java:171)
+ at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:134)
+ at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:68)
+ at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:151)
+ at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+ at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
+ at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
+ at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
+ at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+ at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
+ at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
+ at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
+ at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41)
+ at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155)
+ at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+ at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
+ at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
+ at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
+ at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+ at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
+ at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
+ at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
+ at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41)
+ at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155)
+ at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+ at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
+ at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
+ at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
+ at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+ at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
+ at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
+ at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:35)
+ at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)
+ at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:54)
+ at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:107)
+ at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:88)
+ at org.junit.platform.launcher.core.EngineExecutionOrchestrator.lambda$execute$0(EngineExecutionOrchestrator.java:54)
+ at org.junit.platform.launcher.core.EngineExecutionOrchestrator.withInterceptedStreams(EngineExecutionOrchestrator.java:67)
+ at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:52)
+ at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:114)
+ at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:86)
+ at org.junit.platform.launcher.core.DefaultLauncherSession$DelegatingLauncher.execute(DefaultLauncherSession.java:86)
+ at org.junit.platform.launcher.core.SessionPerRequestLauncher.execute(SessionPerRequestLauncher.java:53)
+ at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.processAllTestClasses(JUnitPlatformTestClassProcessor.java:99)
+ at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.access$000(JUnitPlatformTestClassProcessor.java:79)
+ at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor.stop(JUnitPlatformTestClassProcessor.java:75)
+ at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.stop(SuiteTestClassProcessor.java:61)
+ at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+ at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
+ at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+ at java.base/java.lang.reflect.Method.invoke(Method.java:568)
+ at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:36)
+ at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
+ at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:33)
+ at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:94)
+ at jdk.proxy1/jdk.proxy1.$Proxy2.stop(Unknown Source)
+ at org.gradle.api.internal.tasks.testing.worker.TestWorker$3.run(TestWorker.java:193)
+ at org.gradle.api.internal.tasks.testing.worker.TestWorker.executeAndMaintainThreadName(TestWorker.java:129)
+ at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:100)
+ at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:60)
+ at org.gradle.process.internal.worker.child.ActionExecutionWorker.execute(ActionExecutionWorker.java:56)
+ at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:133)
+ at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:71)
+ at worker.org.gradle.process.internal.worker.GradleWorkerMain.run(GradleWorkerMain.java:69)
+ at worker.org.gradle.process.internal.worker.GradleWorkerMain.main(GradleWorkerMain.java:74)
+The sketch path is not set.
+
+
+
diff --git a/datapirates/build/test-results/test/TEST-EnemyTest.xml b/datapirates/build/test-results/test/TEST-EnemyTest.xml
new file mode 100644
index 0000000..5b5c00c
--- /dev/null
+++ b/datapirates/build/test-results/test/TEST-EnemyTest.xml
@@ -0,0 +1,615 @@
+
+
+
+
+ java.lang.RuntimeException: Files must be loaded inside setup() or after it has been called.
+ at processing.core.PApplet.createInputRaw(PApplet.java:7030)
+ at processing.core.PApplet.createInput(PApplet.java:7002)
+ at processing.core.PApplet.loadImageIO(PApplet.java:5639)
+ at processing.core.PApplet.loadImage(PApplet.java:5486)
+ at processing.core.PApplet.loadImage(PApplet.java:5350)
+ at org.example.spriteClasses.GifManager.setSprites(GifManager.java:74)
+ at org.example.spriteClasses.GifManager.<init>(GifManager.java:36)
+ at org.example.spriteClasses.Enemy.<init>(Enemy.java:45)
+ at EnemyTest.setUp(EnemyTest.java:24)
+ at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+ at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
+ at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+ at java.base/java.lang.reflect.Method.invoke(Method.java:568)
+ at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:727)
+ at org.junit.jupiter.engine.execution.MethodInvocation.proceed(MethodInvocation.java:60)
+ at org.junit.jupiter.engine.execution.InvocationInterceptorChain$ValidatingInvocation.proceed(InvocationInterceptorChain.java:131)
+ at org.junit.jupiter.engine.extension.TimeoutExtension.intercept(TimeoutExtension.java:156)
+ at org.junit.jupiter.engine.extension.TimeoutExtension.interceptLifecycleMethod(TimeoutExtension.java:128)
+ at org.junit.jupiter.engine.extension.TimeoutExtension.interceptBeforeEachMethod(TimeoutExtension.java:78)
+ at org.junit.jupiter.engine.execution.InterceptingExecutableInvoker$ReflectiveInterceptorCall.lambda$ofVoidMethod$0(InterceptingExecutableInvoker.java:103)
+ at org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.lambda$invoke$0(InterceptingExecutableInvoker.java:93)
+ at org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106)
+ at org.junit.jupiter.engine.execution.InvocationInterceptorChain.proceed(InvocationInterceptorChain.java:64)
+ at org.junit.jupiter.engine.execution.InvocationInterceptorChain.chainAndInvoke(InvocationInterceptorChain.java:45)
+ at org.junit.jupiter.engine.execution.InvocationInterceptorChain.invoke(InvocationInterceptorChain.java:37)
+ at org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.invoke(InterceptingExecutableInvoker.java:92)
+ at org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.invoke(InterceptingExecutableInvoker.java:86)
+ at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.invokeMethodInExtensionContext(ClassBasedTestDescriptor.java:520)
+ at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.lambda$synthesizeBeforeEachMethodAdapter$23(ClassBasedTestDescriptor.java:505)
+ at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeBeforeEachMethods$3(TestMethodTestDescriptor.java:174)
+ at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeBeforeMethodsOrCallbacksUntilExceptionOccurs$6(TestMethodTestDescriptor.java:202)
+ at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+ at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeBeforeMethodsOrCallbacksUntilExceptionOccurs(TestMethodTestDescriptor.java:202)
+ at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeBeforeEachMethods(TestMethodTestDescriptor.java:171)
+ at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:134)
+ at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:68)
+ at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:151)
+ at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+ at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
+ at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
+ at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
+ at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+ at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
+ at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
+ at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
+ at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41)
+ at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155)
+ at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+ at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
+ at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
+ at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
+ at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+ at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
+ at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
+ at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
+ at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41)
+ at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155)
+ at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+ at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
+ at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
+ at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
+ at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+ at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
+ at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
+ at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:35)
+ at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)
+ at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:54)
+ at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:107)
+ at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:88)
+ at org.junit.platform.launcher.core.EngineExecutionOrchestrator.lambda$execute$0(EngineExecutionOrchestrator.java:54)
+ at org.junit.platform.launcher.core.EngineExecutionOrchestrator.withInterceptedStreams(EngineExecutionOrchestrator.java:67)
+ at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:52)
+ at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:114)
+ at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:86)
+ at org.junit.platform.launcher.core.DefaultLauncherSession$DelegatingLauncher.execute(DefaultLauncherSession.java:86)
+ at org.junit.platform.launcher.core.SessionPerRequestLauncher.execute(SessionPerRequestLauncher.java:53)
+ at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.processAllTestClasses(JUnitPlatformTestClassProcessor.java:99)
+ at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.access$000(JUnitPlatformTestClassProcessor.java:79)
+ at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor.stop(JUnitPlatformTestClassProcessor.java:75)
+ at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.stop(SuiteTestClassProcessor.java:61)
+ at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+ at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
+ at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+ at java.base/java.lang.reflect.Method.invoke(Method.java:568)
+ at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:36)
+ at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
+ at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:33)
+ at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:94)
+ at jdk.proxy1/jdk.proxy1.$Proxy2.stop(Unknown Source)
+ at org.gradle.api.internal.tasks.testing.worker.TestWorker$3.run(TestWorker.java:193)
+ at org.gradle.api.internal.tasks.testing.worker.TestWorker.executeAndMaintainThreadName(TestWorker.java:129)
+ at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:100)
+ at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:60)
+ at org.gradle.process.internal.worker.child.ActionExecutionWorker.execute(ActionExecutionWorker.java:56)
+ at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:133)
+ at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:71)
+ at worker.org.gradle.process.internal.worker.GradleWorkerMain.run(GradleWorkerMain.java:69)
+ at worker.org.gradle.process.internal.worker.GradleWorkerMain.main(GradleWorkerMain.java:74)
+
+
+
+ java.lang.RuntimeException: Files must be loaded inside setup() or after it has been called.
+ at processing.core.PApplet.createInputRaw(PApplet.java:7030)
+ at processing.core.PApplet.createInput(PApplet.java:7002)
+ at processing.core.PApplet.loadImageIO(PApplet.java:5639)
+ at processing.core.PApplet.loadImage(PApplet.java:5486)
+ at processing.core.PApplet.loadImage(PApplet.java:5350)
+ at org.example.spriteClasses.GifManager.setSprites(GifManager.java:74)
+ at org.example.spriteClasses.GifManager.<init>(GifManager.java:36)
+ at org.example.spriteClasses.Enemy.<init>(Enemy.java:45)
+ at EnemyTest.setUp(EnemyTest.java:24)
+ at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+ at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
+ at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+ at java.base/java.lang.reflect.Method.invoke(Method.java:568)
+ at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:727)
+ at org.junit.jupiter.engine.execution.MethodInvocation.proceed(MethodInvocation.java:60)
+ at org.junit.jupiter.engine.execution.InvocationInterceptorChain$ValidatingInvocation.proceed(InvocationInterceptorChain.java:131)
+ at org.junit.jupiter.engine.extension.TimeoutExtension.intercept(TimeoutExtension.java:156)
+ at org.junit.jupiter.engine.extension.TimeoutExtension.interceptLifecycleMethod(TimeoutExtension.java:128)
+ at org.junit.jupiter.engine.extension.TimeoutExtension.interceptBeforeEachMethod(TimeoutExtension.java:78)
+ at org.junit.jupiter.engine.execution.InterceptingExecutableInvoker$ReflectiveInterceptorCall.lambda$ofVoidMethod$0(InterceptingExecutableInvoker.java:103)
+ at org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.lambda$invoke$0(InterceptingExecutableInvoker.java:93)
+ at org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106)
+ at org.junit.jupiter.engine.execution.InvocationInterceptorChain.proceed(InvocationInterceptorChain.java:64)
+ at org.junit.jupiter.engine.execution.InvocationInterceptorChain.chainAndInvoke(InvocationInterceptorChain.java:45)
+ at org.junit.jupiter.engine.execution.InvocationInterceptorChain.invoke(InvocationInterceptorChain.java:37)
+ at org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.invoke(InterceptingExecutableInvoker.java:92)
+ at org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.invoke(InterceptingExecutableInvoker.java:86)
+ at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.invokeMethodInExtensionContext(ClassBasedTestDescriptor.java:520)
+ at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.lambda$synthesizeBeforeEachMethodAdapter$23(ClassBasedTestDescriptor.java:505)
+ at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeBeforeEachMethods$3(TestMethodTestDescriptor.java:174)
+ at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeBeforeMethodsOrCallbacksUntilExceptionOccurs$6(TestMethodTestDescriptor.java:202)
+ at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+ at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeBeforeMethodsOrCallbacksUntilExceptionOccurs(TestMethodTestDescriptor.java:202)
+ at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeBeforeEachMethods(TestMethodTestDescriptor.java:171)
+ at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:134)
+ at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:68)
+ at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:151)
+ at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+ at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
+ at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
+ at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
+ at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+ at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
+ at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
+ at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
+ at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41)
+ at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155)
+ at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+ at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
+ at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
+ at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
+ at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+ at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
+ at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
+ at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
+ at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41)
+ at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155)
+ at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+ at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
+ at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
+ at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
+ at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+ at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
+ at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
+ at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:35)
+ at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)
+ at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:54)
+ at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:107)
+ at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:88)
+ at org.junit.platform.launcher.core.EngineExecutionOrchestrator.lambda$execute$0(EngineExecutionOrchestrator.java:54)
+ at org.junit.platform.launcher.core.EngineExecutionOrchestrator.withInterceptedStreams(EngineExecutionOrchestrator.java:67)
+ at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:52)
+ at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:114)
+ at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:86)
+ at org.junit.platform.launcher.core.DefaultLauncherSession$DelegatingLauncher.execute(DefaultLauncherSession.java:86)
+ at org.junit.platform.launcher.core.SessionPerRequestLauncher.execute(SessionPerRequestLauncher.java:53)
+ at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.processAllTestClasses(JUnitPlatformTestClassProcessor.java:99)
+ at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.access$000(JUnitPlatformTestClassProcessor.java:79)
+ at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor.stop(JUnitPlatformTestClassProcessor.java:75)
+ at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.stop(SuiteTestClassProcessor.java:61)
+ at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+ at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
+ at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+ at java.base/java.lang.reflect.Method.invoke(Method.java:568)
+ at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:36)
+ at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
+ at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:33)
+ at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:94)
+ at jdk.proxy1/jdk.proxy1.$Proxy2.stop(Unknown Source)
+ at org.gradle.api.internal.tasks.testing.worker.TestWorker$3.run(TestWorker.java:193)
+ at org.gradle.api.internal.tasks.testing.worker.TestWorker.executeAndMaintainThreadName(TestWorker.java:129)
+ at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:100)
+ at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:60)
+ at org.gradle.process.internal.worker.child.ActionExecutionWorker.execute(ActionExecutionWorker.java:56)
+ at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:133)
+ at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:71)
+ at worker.org.gradle.process.internal.worker.GradleWorkerMain.run(GradleWorkerMain.java:69)
+ at worker.org.gradle.process.internal.worker.GradleWorkerMain.main(GradleWorkerMain.java:74)
+
+
+
+ java.lang.RuntimeException: Files must be loaded inside setup() or after it has been called.
+ at processing.core.PApplet.createInputRaw(PApplet.java:7030)
+ at processing.core.PApplet.createInput(PApplet.java:7002)
+ at processing.core.PApplet.loadImageIO(PApplet.java:5639)
+ at processing.core.PApplet.loadImage(PApplet.java:5486)
+ at processing.core.PApplet.loadImage(PApplet.java:5350)
+ at org.example.spriteClasses.GifManager.setSprites(GifManager.java:74)
+ at org.example.spriteClasses.GifManager.<init>(GifManager.java:36)
+ at org.example.spriteClasses.Enemy.<init>(Enemy.java:45)
+ at EnemyTest.setUp(EnemyTest.java:24)
+ at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+ at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
+ at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+ at java.base/java.lang.reflect.Method.invoke(Method.java:568)
+ at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:727)
+ at org.junit.jupiter.engine.execution.MethodInvocation.proceed(MethodInvocation.java:60)
+ at org.junit.jupiter.engine.execution.InvocationInterceptorChain$ValidatingInvocation.proceed(InvocationInterceptorChain.java:131)
+ at org.junit.jupiter.engine.extension.TimeoutExtension.intercept(TimeoutExtension.java:156)
+ at org.junit.jupiter.engine.extension.TimeoutExtension.interceptLifecycleMethod(TimeoutExtension.java:128)
+ at org.junit.jupiter.engine.extension.TimeoutExtension.interceptBeforeEachMethod(TimeoutExtension.java:78)
+ at org.junit.jupiter.engine.execution.InterceptingExecutableInvoker$ReflectiveInterceptorCall.lambda$ofVoidMethod$0(InterceptingExecutableInvoker.java:103)
+ at org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.lambda$invoke$0(InterceptingExecutableInvoker.java:93)
+ at org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106)
+ at org.junit.jupiter.engine.execution.InvocationInterceptorChain.proceed(InvocationInterceptorChain.java:64)
+ at org.junit.jupiter.engine.execution.InvocationInterceptorChain.chainAndInvoke(InvocationInterceptorChain.java:45)
+ at org.junit.jupiter.engine.execution.InvocationInterceptorChain.invoke(InvocationInterceptorChain.java:37)
+ at org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.invoke(InterceptingExecutableInvoker.java:92)
+ at org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.invoke(InterceptingExecutableInvoker.java:86)
+ at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.invokeMethodInExtensionContext(ClassBasedTestDescriptor.java:520)
+ at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.lambda$synthesizeBeforeEachMethodAdapter$23(ClassBasedTestDescriptor.java:505)
+ at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeBeforeEachMethods$3(TestMethodTestDescriptor.java:174)
+ at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeBeforeMethodsOrCallbacksUntilExceptionOccurs$6(TestMethodTestDescriptor.java:202)
+ at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+ at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeBeforeMethodsOrCallbacksUntilExceptionOccurs(TestMethodTestDescriptor.java:202)
+ at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeBeforeEachMethods(TestMethodTestDescriptor.java:171)
+ at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:134)
+ at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:68)
+ at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:151)
+ at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+ at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
+ at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
+ at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
+ at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+ at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
+ at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
+ at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
+ at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41)
+ at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155)
+ at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+ at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
+ at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
+ at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
+ at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+ at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
+ at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
+ at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
+ at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41)
+ at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155)
+ at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+ at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
+ at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
+ at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
+ at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+ at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
+ at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
+ at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:35)
+ at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)
+ at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:54)
+ at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:107)
+ at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:88)
+ at org.junit.platform.launcher.core.EngineExecutionOrchestrator.lambda$execute$0(EngineExecutionOrchestrator.java:54)
+ at org.junit.platform.launcher.core.EngineExecutionOrchestrator.withInterceptedStreams(EngineExecutionOrchestrator.java:67)
+ at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:52)
+ at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:114)
+ at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:86)
+ at org.junit.platform.launcher.core.DefaultLauncherSession$DelegatingLauncher.execute(DefaultLauncherSession.java:86)
+ at org.junit.platform.launcher.core.SessionPerRequestLauncher.execute(SessionPerRequestLauncher.java:53)
+ at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.processAllTestClasses(JUnitPlatformTestClassProcessor.java:99)
+ at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.access$000(JUnitPlatformTestClassProcessor.java:79)
+ at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor.stop(JUnitPlatformTestClassProcessor.java:75)
+ at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.stop(SuiteTestClassProcessor.java:61)
+ at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+ at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
+ at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+ at java.base/java.lang.reflect.Method.invoke(Method.java:568)
+ at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:36)
+ at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
+ at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:33)
+ at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:94)
+ at jdk.proxy1/jdk.proxy1.$Proxy2.stop(Unknown Source)
+ at org.gradle.api.internal.tasks.testing.worker.TestWorker$3.run(TestWorker.java:193)
+ at org.gradle.api.internal.tasks.testing.worker.TestWorker.executeAndMaintainThreadName(TestWorker.java:129)
+ at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:100)
+ at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:60)
+ at org.gradle.process.internal.worker.child.ActionExecutionWorker.execute(ActionExecutionWorker.java:56)
+ at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:133)
+ at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:71)
+ at worker.org.gradle.process.internal.worker.GradleWorkerMain.run(GradleWorkerMain.java:69)
+ at worker.org.gradle.process.internal.worker.GradleWorkerMain.main(GradleWorkerMain.java:74)
+
+
+
+ (GifManager.java:36)
+ at org.example.spriteClasses.Enemy.(Enemy.java:45)
+ at EnemyTest.setUp(EnemyTest.java:24)
+ at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+ at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
+ at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+ at java.base/java.lang.reflect.Method.invoke(Method.java:568)
+ at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:727)
+ at org.junit.jupiter.engine.execution.MethodInvocation.proceed(MethodInvocation.java:60)
+ at org.junit.jupiter.engine.execution.InvocationInterceptorChain$ValidatingInvocation.proceed(InvocationInterceptorChain.java:131)
+ at org.junit.jupiter.engine.extension.TimeoutExtension.intercept(TimeoutExtension.java:156)
+ at org.junit.jupiter.engine.extension.TimeoutExtension.interceptLifecycleMethod(TimeoutExtension.java:128)
+ at org.junit.jupiter.engine.extension.TimeoutExtension.interceptBeforeEachMethod(TimeoutExtension.java:78)
+ at org.junit.jupiter.engine.execution.InterceptingExecutableInvoker$ReflectiveInterceptorCall.lambda$ofVoidMethod$0(InterceptingExecutableInvoker.java:103)
+ at org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.lambda$invoke$0(InterceptingExecutableInvoker.java:93)
+ at org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106)
+ at org.junit.jupiter.engine.execution.InvocationInterceptorChain.proceed(InvocationInterceptorChain.java:64)
+ at org.junit.jupiter.engine.execution.InvocationInterceptorChain.chainAndInvoke(InvocationInterceptorChain.java:45)
+ at org.junit.jupiter.engine.execution.InvocationInterceptorChain.invoke(InvocationInterceptorChain.java:37)
+ at org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.invoke(InterceptingExecutableInvoker.java:92)
+ at org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.invoke(InterceptingExecutableInvoker.java:86)
+ at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.invokeMethodInExtensionContext(ClassBasedTestDescriptor.java:520)
+ at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.lambda$synthesizeBeforeEachMethodAdapter$23(ClassBasedTestDescriptor.java:505)
+ at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeBeforeEachMethods$3(TestMethodTestDescriptor.java:174)
+ at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeBeforeMethodsOrCallbacksUntilExceptionOccurs$6(TestMethodTestDescriptor.java:202)
+ at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+ at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeBeforeMethodsOrCallbacksUntilExceptionOccurs(TestMethodTestDescriptor.java:202)
+ at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeBeforeEachMethods(TestMethodTestDescriptor.java:171)
+ at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:134)
+ at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:68)
+ at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:151)
+ at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+ at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
+ at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
+ at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
+ at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+ at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
+ at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
+ at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
+ at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41)
+ at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155)
+ at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+ at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
+ at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
+ at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
+ at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+ at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
+ at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
+ at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
+ at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41)
+ at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155)
+ at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+ at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
+ at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
+ at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
+ at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+ at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
+ at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
+ at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:35)
+ at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)
+ at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:54)
+ at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:107)
+ at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:88)
+ at org.junit.platform.launcher.core.EngineExecutionOrchestrator.lambda$execute$0(EngineExecutionOrchestrator.java:54)
+ at org.junit.platform.launcher.core.EngineExecutionOrchestrator.withInterceptedStreams(EngineExecutionOrchestrator.java:67)
+ at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:52)
+ at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:114)
+ at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:86)
+ at org.junit.platform.launcher.core.DefaultLauncherSession$DelegatingLauncher.execute(DefaultLauncherSession.java:86)
+ at org.junit.platform.launcher.core.SessionPerRequestLauncher.execute(SessionPerRequestLauncher.java:53)
+ at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.processAllTestClasses(JUnitPlatformTestClassProcessor.java:99)
+ at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.access$000(JUnitPlatformTestClassProcessor.java:79)
+ at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor.stop(JUnitPlatformTestClassProcessor.java:75)
+ at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.stop(SuiteTestClassProcessor.java:61)
+ at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+ at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
+ at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+ at java.base/java.lang.reflect.Method.invoke(Method.java:568)
+ at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:36)
+ at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
+ at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:33)
+ at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:94)
+ at jdk.proxy1/jdk.proxy1.$Proxy2.stop(Unknown Source)
+ at org.gradle.api.internal.tasks.testing.worker.TestWorker$3.run(TestWorker.java:193)
+ at org.gradle.api.internal.tasks.testing.worker.TestWorker.executeAndMaintainThreadName(TestWorker.java:129)
+ at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:100)
+ at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:60)
+ at org.gradle.process.internal.worker.child.ActionExecutionWorker.execute(ActionExecutionWorker.java:56)
+ at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:133)
+ at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:71)
+ at worker.org.gradle.process.internal.worker.GradleWorkerMain.run(GradleWorkerMain.java:69)
+ at worker.org.gradle.process.internal.worker.GradleWorkerMain.main(GradleWorkerMain.java:74)
+The sketch path is not set.
+The sketch path is not set.
+java.lang.RuntimeException: Files must be loaded inside setup() or after it has been called.
+ at processing.core.PApplet.createInputRaw(PApplet.java:7030)
+ at processing.core.PApplet.createInput(PApplet.java:7002)
+ at processing.core.PApplet.loadBytes(PApplet.java:7292)
+ at processing.core.PApplet.loadImage(PApplet.java:5428)
+ at processing.core.PApplet.loadImage(PApplet.java:5350)
+ at org.example.spriteClasses.GifManager.setSprites(GifManager.java:74)
+ at org.example.spriteClasses.GifManager.(GifManager.java:36)
+ at org.example.spriteClasses.Enemy.(Enemy.java:45)
+ at EnemyTest.setUp(EnemyTest.java:24)
+ at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+ at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
+ at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+ at java.base/java.lang.reflect.Method.invoke(Method.java:568)
+ at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:727)
+ at org.junit.jupiter.engine.execution.MethodInvocation.proceed(MethodInvocation.java:60)
+ at org.junit.jupiter.engine.execution.InvocationInterceptorChain$ValidatingInvocation.proceed(InvocationInterceptorChain.java:131)
+ at org.junit.jupiter.engine.extension.TimeoutExtension.intercept(TimeoutExtension.java:156)
+ at org.junit.jupiter.engine.extension.TimeoutExtension.interceptLifecycleMethod(TimeoutExtension.java:128)
+ at org.junit.jupiter.engine.extension.TimeoutExtension.interceptBeforeEachMethod(TimeoutExtension.java:78)
+ at org.junit.jupiter.engine.execution.InterceptingExecutableInvoker$ReflectiveInterceptorCall.lambda$ofVoidMethod$0(InterceptingExecutableInvoker.java:103)
+ at org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.lambda$invoke$0(InterceptingExecutableInvoker.java:93)
+ at org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106)
+ at org.junit.jupiter.engine.execution.InvocationInterceptorChain.proceed(InvocationInterceptorChain.java:64)
+ at org.junit.jupiter.engine.execution.InvocationInterceptorChain.chainAndInvoke(InvocationInterceptorChain.java:45)
+ at org.junit.jupiter.engine.execution.InvocationInterceptorChain.invoke(InvocationInterceptorChain.java:37)
+ at org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.invoke(InterceptingExecutableInvoker.java:92)
+ at org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.invoke(InterceptingExecutableInvoker.java:86)
+ at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.invokeMethodInExtensionContext(ClassBasedTestDescriptor.java:520)
+ at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.lambda$synthesizeBeforeEachMethodAdapter$23(ClassBasedTestDescriptor.java:505)
+ at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeBeforeEachMethods$3(TestMethodTestDescriptor.java:174)
+ at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeBeforeMethodsOrCallbacksUntilExceptionOccurs$6(TestMethodTestDescriptor.java:202)
+ at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+ at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeBeforeMethodsOrCallbacksUntilExceptionOccurs(TestMethodTestDescriptor.java:202)
+ at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeBeforeEachMethods(TestMethodTestDescriptor.java:171)
+ at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:134)
+ at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:68)
+ at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:151)
+ at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+ at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
+ at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
+ at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
+ at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+ at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
+ at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
+ at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
+ at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41)
+ at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155)
+ at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+ at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
+ at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
+ at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
+ at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+ at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
+ at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
+ at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
+ at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41)
+ at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155)
+ at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+ at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
+ at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
+ at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
+ at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+ at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
+ at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
+ at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:35)
+ at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)
+ at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:54)
+ at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:107)
+ at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:88)
+ at org.junit.platform.launcher.core.EngineExecutionOrchestrator.lambda$execute$0(EngineExecutionOrchestrator.java:54)
+ at org.junit.platform.launcher.core.EngineExecutionOrchestrator.withInterceptedStreams(EngineExecutionOrchestrator.java:67)
+ at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:52)
+ at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:114)
+ at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:86)
+ at org.junit.platform.launcher.core.DefaultLauncherSession$DelegatingLauncher.execute(DefaultLauncherSession.java:86)
+ at org.junit.platform.launcher.core.SessionPerRequestLauncher.execute(SessionPerRequestLauncher.java:53)
+ at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.processAllTestClasses(JUnitPlatformTestClassProcessor.java:99)
+ at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.access$000(JUnitPlatformTestClassProcessor.java:79)
+ at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor.stop(JUnitPlatformTestClassProcessor.java:75)
+ at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.stop(SuiteTestClassProcessor.java:61)
+ at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+ at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
+ at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+ at java.base/java.lang.reflect.Method.invoke(Method.java:568)
+ at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:36)
+ at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
+ at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:33)
+ at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:94)
+ at jdk.proxy1/jdk.proxy1.$Proxy2.stop(Unknown Source)
+ at org.gradle.api.internal.tasks.testing.worker.TestWorker$3.run(TestWorker.java:193)
+ at org.gradle.api.internal.tasks.testing.worker.TestWorker.executeAndMaintainThreadName(TestWorker.java:129)
+ at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:100)
+ at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:60)
+ at org.gradle.process.internal.worker.child.ActionExecutionWorker.execute(ActionExecutionWorker.java:56)
+ at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:133)
+ at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:71)
+ at worker.org.gradle.process.internal.worker.GradleWorkerMain.run(GradleWorkerMain.java:69)
+ at worker.org.gradle.process.internal.worker.GradleWorkerMain.main(GradleWorkerMain.java:74)
+The sketch path is not set.
+The sketch path is not set.
+java.lang.RuntimeException: Files must be loaded inside setup() or after it has been called.
+ at processing.core.PApplet.createInputRaw(PApplet.java:7030)
+ at processing.core.PApplet.createInput(PApplet.java:7002)
+ at processing.core.PApplet.loadBytes(PApplet.java:7292)
+ at processing.core.PApplet.loadImage(PApplet.java:5428)
+ at processing.core.PApplet.loadImage(PApplet.java:5350)
+ at org.example.spriteClasses.GifManager.setSprites(GifManager.java:74)
+ at org.example.spriteClasses.GifManager.(GifManager.java:36)
+ at org.example.spriteClasses.Enemy.(Enemy.java:45)
+ at EnemyTest.setUp(EnemyTest.java:24)
+ at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+ at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
+ at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+ at java.base/java.lang.reflect.Method.invoke(Method.java:568)
+ at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:727)
+ at org.junit.jupiter.engine.execution.MethodInvocation.proceed(MethodInvocation.java:60)
+ at org.junit.jupiter.engine.execution.InvocationInterceptorChain$ValidatingInvocation.proceed(InvocationInterceptorChain.java:131)
+ at org.junit.jupiter.engine.extension.TimeoutExtension.intercept(TimeoutExtension.java:156)
+ at org.junit.jupiter.engine.extension.TimeoutExtension.interceptLifecycleMethod(TimeoutExtension.java:128)
+ at org.junit.jupiter.engine.extension.TimeoutExtension.interceptBeforeEachMethod(TimeoutExtension.java:78)
+ at org.junit.jupiter.engine.execution.InterceptingExecutableInvoker$ReflectiveInterceptorCall.lambda$ofVoidMethod$0(InterceptingExecutableInvoker.java:103)
+ at org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.lambda$invoke$0(InterceptingExecutableInvoker.java:93)
+ at org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106)
+ at org.junit.jupiter.engine.execution.InvocationInterceptorChain.proceed(InvocationInterceptorChain.java:64)
+ at org.junit.jupiter.engine.execution.InvocationInterceptorChain.chainAndInvoke(InvocationInterceptorChain.java:45)
+ at org.junit.jupiter.engine.execution.InvocationInterceptorChain.invoke(InvocationInterceptorChain.java:37)
+ at org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.invoke(InterceptingExecutableInvoker.java:92)
+ at org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.invoke(InterceptingExecutableInvoker.java:86)
+ at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.invokeMethodInExtensionContext(ClassBasedTestDescriptor.java:520)
+ at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.lambda$synthesizeBeforeEachMethodAdapter$23(ClassBasedTestDescriptor.java:505)
+ at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeBeforeEachMethods$3(TestMethodTestDescriptor.java:174)
+ at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeBeforeMethodsOrCallbacksUntilExceptionOccurs$6(TestMethodTestDescriptor.java:202)
+ at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+ at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeBeforeMethodsOrCallbacksUntilExceptionOccurs(TestMethodTestDescriptor.java:202)
+ at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeBeforeEachMethods(TestMethodTestDescriptor.java:171)
+ at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:134)
+ at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:68)
+ at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:151)
+ at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+ at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
+ at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
+ at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
+ at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+ at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
+ at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
+ at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
+ at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41)
+ at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155)
+ at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+ at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
+ at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
+ at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
+ at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+ at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
+ at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
+ at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
+ at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41)
+ at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155)
+ at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+ at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
+ at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
+ at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
+ at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+ at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
+ at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
+ at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:35)
+ at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)
+ at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:54)
+ at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:107)
+ at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:88)
+ at org.junit.platform.launcher.core.EngineExecutionOrchestrator.lambda$execute$0(EngineExecutionOrchestrator.java:54)
+ at org.junit.platform.launcher.core.EngineExecutionOrchestrator.withInterceptedStreams(EngineExecutionOrchestrator.java:67)
+ at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:52)
+ at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:114)
+ at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:86)
+ at org.junit.platform.launcher.core.DefaultLauncherSession$DelegatingLauncher.execute(DefaultLauncherSession.java:86)
+ at org.junit.platform.launcher.core.SessionPerRequestLauncher.execute(SessionPerRequestLauncher.java:53)
+ at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.processAllTestClasses(JUnitPlatformTestClassProcessor.java:99)
+ at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.access$000(JUnitPlatformTestClassProcessor.java:79)
+ at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor.stop(JUnitPlatformTestClassProcessor.java:75)
+ at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.stop(SuiteTestClassProcessor.java:61)
+ at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+ at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
+ at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+ at java.base/java.lang.reflect.Method.invoke(Method.java:568)
+ at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:36)
+ at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
+ at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:33)
+ at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:94)
+ at jdk.proxy1/jdk.proxy1.$Proxy2.stop(Unknown Source)
+ at org.gradle.api.internal.tasks.testing.worker.TestWorker$3.run(TestWorker.java:193)
+ at org.gradle.api.internal.tasks.testing.worker.TestWorker.executeAndMaintainThreadName(TestWorker.java:129)
+ at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:100)
+ at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:60)
+ at org.gradle.process.internal.worker.child.ActionExecutionWorker.execute(ActionExecutionWorker.java:56)
+ at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:133)
+ at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:71)
+ at worker.org.gradle.process.internal.worker.GradleWorkerMain.run(GradleWorkerMain.java:69)
+ at worker.org.gradle.process.internal.worker.GradleWorkerMain.main(GradleWorkerMain.java:74)
+The sketch path is not set.
+]]>
+
diff --git a/datapirates/build/test-results/test/binary/output.bin b/datapirates/build/test-results/test/binary/output.bin
new file mode 100644
index 0000000..8f03e02
Binary files /dev/null and b/datapirates/build/test-results/test/binary/output.bin differ
diff --git a/datapirates/build/test-results/test/binary/output.bin.idx b/datapirates/build/test-results/test/binary/output.bin.idx
new file mode 100644
index 0000000..4112237
Binary files /dev/null and b/datapirates/build/test-results/test/binary/output.bin.idx differ
diff --git a/datapirates/build/test-results/test/binary/results.bin b/datapirates/build/test-results/test/binary/results.bin
new file mode 100644
index 0000000..600da10
Binary files /dev/null and b/datapirates/build/test-results/test/binary/results.bin differ
diff --git a/datapirates/build/tmp/compileJava/previous-compilation-data.bin b/datapirates/build/tmp/compileJava/previous-compilation-data.bin
new file mode 100644
index 0000000..77d5a07
Binary files /dev/null and b/datapirates/build/tmp/compileJava/previous-compilation-data.bin differ
diff --git a/datapirates/build/tmp/compileTestJava/previous-compilation-data.bin b/datapirates/build/tmp/compileTestJava/previous-compilation-data.bin
new file mode 100644
index 0000000..e041146
Binary files /dev/null and b/datapirates/build/tmp/compileTestJava/previous-compilation-data.bin differ
diff --git a/datapirates/documents/Jack/img.png b/datapirates/documents/Jack/img.png
new file mode 100644
index 0000000..3843e83
Binary files /dev/null and b/datapirates/documents/Jack/img.png differ
diff --git a/datapirates/documents/Jack/pitch.md b/datapirates/documents/Jack/pitch.md
new file mode 100644
index 0000000..e48fa62
--- /dev/null
+++ b/datapirates/documents/Jack/pitch.md
@@ -0,0 +1,3 @@
+Jack:Menu, Player,ProjectileType and test. The Menu class is responsible for rendering the game's main menu, allowing the user to navigate between different game modes and options. The Player class extends the Sprite class and represents the player's character in the game. The ProjectileType1 class extends the Projectile class and defines the projectiles fired by the player's character.
+
+
\ No newline at end of file
diff --git a/datapirates/documents/Teddy/TD_pitch.md b/datapirates/documents/Teddy/TD_pitch.md
new file mode 100644
index 0000000..35cf6e3
--- /dev/null
+++ b/datapirates/documents/Teddy/TD_pitch.md
@@ -0,0 +1,11 @@
+
Teddy Dumam-Ag
+
System Architect, UI/UX Designer (a bit) and Backend.
+ * About
+ * Data Pirates is a survival game where you have to
+ * defend yourself against these space data creatures.
+ *
+ * Data Pirates can be considered as a playground.
+ * The game is designed to be a bit challenging.
+ * However, it is still quite fun.
+ *
+ *
+ * @author The Team:
+ * Eric G,
+ * Ning,
+ * Jack,
+ * Teddy D
+ *
+ * @version JDK 18.
+ */
+public class Window extends PApplet {
+
+ /* Only one player allowed. Single player. */
+ protected static Player player;
+
+ /*
+ Screen's Width.
+ */
+ public static final int WIDTH = 1080;
+
+ /*
+ Screen's Height.
+ */
+ public static final int HEIGHT = 720;
+
+ /*
+ Preloader Class.
+ */
+ private Preloader preloader;
+
+ /*
+ The "Functions" class.
+ */
+ private WindowHelper wH;
+
+ /**
+ * Settings of the PApplet program.
+ */
+ public void settings() {
+ size(WIDTH, HEIGHT);
+ }
+
+ @Override
+ public void exit() {
+ super.exit();
+ }
+
+ /**
+ * Setup version 2.
+ * Had to be in a separate class because Preloader uses Thread.
+ * And this can throw an error because one of the values is not initialized.
+ */
+ public void getResource() {
+ init();
+ preloader.getClock().start();
+ frameRate(100);
+ }
+
+ /**
+ * Sets the game mechanics.
+ */
+ public void setup() {
+ PImage icon = loadImage("datapirates\\src\\main\\java\\org\\example\\static_assets\\icon.png");
+ surface.setTitle("Data Pirates");
+ surface.setIcon(icon);
+ wH = new WindowHelper(this);
+ preloader = wH.getPreloader();
+ }
+
+ /**
+ * Set player.
+ */
+ public void init() {
+ preloader.getScore().setValue(0);
+ player = Player.getInstance(
+ new PVector((float) (WIDTH / 2), (float) (HEIGHT / 2)),
+ new PVector(0, 1),
+ 75,
+ 5,
+ EntityColor.getSpriteColors().get("Player"),
+ this);
+
+ preloader.getDpC().getSprites().add(player);
+ }
+
+ /**
+ * Triggers when a key is pressed.
+ * Spam bullet is now a feature.
+ *
+ * @param e KeyEvent, key input.
+ *
+ */
+ @Override
+ public void keyPressed(KeyEvent e) {
+ /*
+ If preloader is done, this function is enabled.
+ */
+ if (preloader.isFinished())
+ wH.keyPressedHandler(e);
+ }
+
+ /**
+ * Included this function to help smooth player movement.
+ *
+ * @param e keyboard input.
+ *
+ */
+ @Override
+ public void keyReleased(KeyEvent e) {
+ /*
+ Meaning, this function will only activate when the preloader is finished.
+ */
+ if (preloader.isFinished())
+ wH.keyReleasedHandler(e);
+
+ }
+
+ /**
+ * Calls when a MouseEvent has been triggered.
+ * Specifically, clicking.
+ */
+ @Override
+ public void mousePressed() {
+ if (preloader.isFinished()) {
+ if (wH.getWorld() == 3) {
+ preloader.getMenu().update();
+ }
+ wH.shootFunction();
+ }
+ }
+
+
+ /**
+ * Threads... every frame.
+ */
+ public void draw() {
+ /*
+ TODO: If preloader is not finished loading everything
+ display loading background. Duh.
+ */
+ if (!preloader.isFinished()) {
+ if (preloader.getLoadingImage() != null)
+ preloader.getLoadingImage().displayBackground();
+ } else {
+ wH.setWindow(this);
+ /* If player dies. */
+ if (wH.isPlayerDead()) {
+ wH.resetStates();
+ init();
+ }
+
+ /* Placeholder for travel function. */
+ preloader.getSaferoom().travel();
+
+ /*
+ player.move() is placed here to ensure smooth player movement every frame.
+ */
+ player.move();
+
+ /*
+ For every world set the building blocks.
+ */
+ wH.renderNewLocation(wH.getWorld());
+
+ /*
+ Play the background music.
+ */
+ if (MusicManager.getObjectType() != wH.getWorld()) {
+ if (MusicManager.isPlaying())
+ MusicManager.stop();
+ MusicManager.play(wH.getWorld());
+ }
+
+ /* Alternate Name: Start next wave. */
+ wH.beginTheBattle();
+
+ /* The compact function of draw and update. */
+ wH.updateFrame();
+
+ /* Warns player to reload. */
+ if (!player.getWeapon().hasAmmo()) {
+ textSize(60);
+ fill(EntityColor.getSpriteColors().get("Reload").getRed(),
+ EntityColor.getSpriteColors().get("Reload").getGreen(),
+ EntityColor.getSpriteColors().get("Reload").getBlue());
+ text("Reload!", player.getPosition().x + player.getSize(),
+ player.getPosition().y + player.getSize());
+ }
+ }
+ }
+
+ /**
+ * Gets the player, only this class has the player.
+ *
+ * @return player.
+ *
+ * @type Important Getter.
+ *
+ */
+ public Player getPlayer() {
+ return player;
+ }
+
+ /**
+ * Gets the Preloader, only this class has the Preloader.
+ *
+ * @return the preloader.
+ *
+ * @type Important Getter.
+ *
+ */
+ public Preloader getPreloader() {
+ return preloader;
+ }
+
+ /**
+ * Gets the world number.
+ * Used for scene generation.
+ *
+ * @return world.
+ *
+ */
+ public int getWorld() {
+ return wH.getWorld();
+ }
+
+ /**
+ * Sets the world number.
+ * Used when the player moves into specific places.
+ *
+ * @param world number, worldID.
+ *
+ */
+ public void setWorld(int world) {
+ wH.setWorld(world);
+ }
+
+ /**
+ * Drives the program.
+ *
+ * @param args unused.
+ *
+ */
+ public static void main(String[] args) {
+ PApplet.main("org.example.Main.Window");
+ }
+}
+
diff --git a/datapirates/src/main/java/org/example/Main/WindowHelper.java b/datapirates/src/main/java/org/example/Main/WindowHelper.java
new file mode 100644
index 0000000..5559b95
--- /dev/null
+++ b/datapirates/src/main/java/org/example/Main/WindowHelper.java
@@ -0,0 +1,426 @@
+package org.example.Main;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Map;
+import org.example.gui.Hud;
+import org.example.music.MusicManager;
+import org.example.spriteClasses.Enemy;
+import org.example.spriteClasses.Player;
+import org.example.spriteClasses.Projectile;
+import org.example.spriteClasses.Sprite;
+import org.example.spriteClasses.SpriteManager;
+import processing.core.PApplet;
+import processing.core.PVector;
+import processing.event.KeyEvent;
+
+
+/**
+ * Behemoth of a program.
+ * Data Pirates' functionality.
+ *
+ * @author Data Pirates Team.
+ *
+ * @version JDK 18.
+ */
+public class WindowHelper {
+
+ /* Min size of entities. */
+ private static final int MINSIZE = 50;
+
+ /* Max size of entities. */
+ private static final int MAXSIZE = 150;
+
+ /* Number of Enemies. */
+ private int numEnemies = 1;
+
+ /* World ID value. */
+ private int world = 3;
+
+ private Window window;
+
+ private final Preloader preloader;
+
+ /**
+ * Construct the helper. Start the preloader.
+ *
+ * @param sketch the window which the helper is going to use.
+ */
+ public WindowHelper(Window sketch) {
+ window = sketch;
+ preloader = new Preloader(window);
+ }
+
+ /**
+ * Check weather the player is dead. Health <= 0.
+ *
+ * @return true when Health <= 0, false otherwise.
+ *
+ */
+ public boolean isPlayerDead() {
+ return window.getPlayer().getPlayerStat().getHealth() <= 0;
+ }
+
+ /**
+ * Used on death moment.
+ */
+ public void resetStates() {
+ world = 3; /* Assign to title page. */
+ numEnemies = 1; /* Reset counter. */
+ preloader.getDpC().getTrash().addAll(preloader.getDpC().getBullets()); /* Remove Sprites 1. */
+ preloader.getDpC().getTrash().addAll(preloader.getDpC().getSprites()); /* Remove Sprites 2. */
+ }
+
+ /**
+ * Called within the draw function. Handles and performs such conditions to ensure
+ * efficiency player and enemy elimination.
+ */
+ public void collideManager() {
+ Player p = window.getPlayer();
+ /* Bullet Vs Enemies */
+ ArrayList conCurrentModHelper = new ArrayList<>(preloader.getDpC().getSprites());
+ ArrayList conCurrentModHelper2 = new ArrayList<>(preloader.getDpC().getBullets());
+ for (Sprite bullet : conCurrentModHelper2) {
+ /* Enemy Bullet are weak. Lore of this game, the ship is built different. */
+ if (bullet.collided(p) && ((Projectile) bullet).type == 1) {
+ p.getPlayerStat().setHealth(p.getPlayerStat().getHealth() - 5);
+ MusicManager.play(7);
+ preloader.getDpC().getTrash().add(bullet);
+ }
+ for (Sprite sprite : conCurrentModHelper) {
+ /* Your bullet vs enemies. */
+ if (sprite instanceof Enemy && bullet.collided(sprite) && ((Projectile) bullet).type == 0) {
+ ((Enemy) sprite).getEnemyStat().setHealth(
+ ((Enemy) sprite).getEnemyStat().getHealth() - p.getWeapon().getDmg());
+ if (((Enemy) sprite).getEnemyStat().getHealth() <= 0) {
+ preloader.getDpC().getRemove().put((Projectile) bullet, (Enemy) sprite);
+ preloader.getScore().setValue(preloader.getScore().getValue() + 2);
+ } else /* Hi, I am my name is Code Above! */
+ preloader.getDpC().getTrash().add(bullet);
+ }
+ /* TODO {Note} : Code Above is for bullets going beyond bounds. */
+ }
+ if (bullet.getPosition().x >= Window.WIDTH || bullet.getPosition().y >= Window.HEIGHT)
+ preloader.getDpC().getTrash().add(bullet);
+ }
+
+ /* Player colliding themselves to Enemies. */
+ for (Sprite enemy : conCurrentModHelper)
+ if (enemy instanceof Enemy)
+ if (p.collided(enemy)) {
+ p.getPlayerStat().setHealth(((Enemy) enemy).getEnemyStat().getCalculatedDamage(p));
+ /* TODO: You kill it instantly! */
+ MusicManager.play(7);
+ ((Enemy) enemy).getEnemyStat().setHealth(0);
+ preloader.getScore().setValue(preloader.getScore().getValue() + 1);
+ preloader.getDpC().getTrash().add(enemy);
+ }
+
+ /* For each 'Bullet Vs Enemy' in 'Bullet colliding Enemy', remove it. */
+ for (Map.Entry mapElement : preloader.getDpC().getRemove().entrySet()) {
+ removeBullet(mapElement.getKey());
+ removeEnemies(mapElement.getValue());
+ }
+
+ /*
+ Remove enemies that touched the player.
+ Remove bullets that are out of bounds.
+ */
+ for (Sprite s : preloader.getDpC().getTrash()) {
+ if (s instanceof Projectile)
+ removeBullet(s);
+ else if (s instanceof Enemy)
+ removeEnemies(s);
+ }
+ }
+
+ /**
+ * Removes an enemy in the enemy
+ * and sprite list.
+ *
+ * @param s Enemy as a Sprite object.
+ */
+ public void removeEnemies(Sprite s) {
+ ((Enemy) s).getEnemyStat().setHealth(0);
+ preloader.getDpC().getSprites().remove(s);
+ }
+
+ /**
+ * Remove both enemies and bullets.
+ * Used for resetting stats. (Death moment)
+ *
+ * @param s Sprite entity.
+ *
+ */
+ public void removeEnemiesNBullets(Sprite s) {
+ if (s instanceof Enemy)
+ removeEnemies(s);
+ else if (s instanceof Projectile)
+ removeBullet(s);
+ }
+
+ /**
+ * Removes a bullet from the bullet
+ * and sprite list.
+ *
+ * @param b Bullet as a Sprite object.
+ *
+ */
+ public void removeBullet(Sprite b) {
+ preloader.getDpC().getBullets().remove(b);
+ preloader.getDpC().getSprites().remove(b);
+ }
+
+ /**
+ * Display enemies. Adds a random amount of enemies to sprite.
+ */
+ public void showEnemies() {
+
+ /*
+ Spawn Enemies.
+ Randomize the amount of enemies.
+ */
+ for (int i = 0; i < (Preloader.RNG.nextInt(numEnemies) + 1); i++) {
+ new Thread(() -> {
+ /* In between position of player's bounds and enemy bounds */
+
+ /* TODO: Level 1, the Iron Sucker. */
+ Sprite e = null;
+ if (preloader.getScore().getValue() < 100) {
+ e = new Enemy(
+ 15,
+ false,
+ window.random(MINSIZE, MAXSIZE),
+ window.random(0, 2),
+ window, "LVL_1\\frame ", 36
+ );
+ } else if (preloader.getScore().getValue() >= 100
+ && preloader.getScore().getValue() < 1000) {
+ /* TODO: Level 2, 4th Wall's lil machines. */
+ e = new Enemy(
+ 25,
+ true,
+ window.random(MINSIZE, MAXSIZE),
+ window.random(1, 4),
+ window, "LVL_2\\frame ", 6
+ );
+ } else if (preloader.getScore().getValue() >= 1000
+ && preloader.getScore().getValue() < 5000) {
+ /* TODO: Level 5, Error Glitches. */
+ e = new Enemy(
+ 45,
+ true,
+ window.random(MINSIZE, MAXSIZE),
+ window.random(5, 10),
+ window, "LVL_5\\frame ", 9
+ );
+ } else if (preloader.getScore().getValue() >= 5000) {
+ /* TODO: Level 10, HIM's creations. */
+ e = new Enemy(
+ 75,
+ true,
+ window.random(MINSIZE, MAXSIZE),
+ window.random(8, 12),
+ window, "LVL_10\\frame ", 29
+ );
+ }
+
+ preloader.getDpC().getSprites().add(e);
+ }).start();
+ }
+ }
+
+ /**
+ * Renders the current locations.
+ *
+ *