summaryrefslogtreecommitdiff
path: root/src/aufgaben/blatt2/Objekt.java
diff options
context:
space:
mode:
authorLeonard Kugis <leonard@kug.is>2022-04-25 18:36:30 +0200
committerLeonard Kugis <leonard@kug.is>2022-04-25 18:36:30 +0200
commit84e220b332bfffb0f2dcc39b9697a6fd6691d265 (patch)
tree0b861a9a099017ffd9bf00bae12e33ed6a309bbe /src/aufgaben/blatt2/Objekt.java
Initial commitHEADmaster
Diffstat (limited to 'src/aufgaben/blatt2/Objekt.java')
-rwxr-xr-xsrc/aufgaben/blatt2/Objekt.java65
1 files changed, 65 insertions, 0 deletions
diff --git a/src/aufgaben/blatt2/Objekt.java b/src/aufgaben/blatt2/Objekt.java
new file mode 100755
index 0000000..031b73a
--- /dev/null
+++ b/src/aufgaben/blatt2/Objekt.java
@@ -0,0 +1,65 @@
+package aufgaben.blatt2;
+
+import java.util.Date;
+
+public class Objekt {
+
+ private float x, y, dir, v;
+ private long time;
+
+ public Objekt(int x, int y) {
+ this.x = x;
+ this.y = y;
+ }
+
+ public void setX(int x) {
+ this.x = x;
+ }
+
+ public void setY(int y) {
+ this.y = y;
+ }
+
+ public void setMovement(float degrees, float v) {
+ this.dir = degrees;
+ this.v = v;
+ this.time = System.nanoTime();
+ }
+
+ public void update() {
+ long delta = getDelta();
+ float change = (float) (delta/1e9);
+ if(dir == 0 || dir == 360) {
+ x += change * v;
+ } else if(dir >= 0 && dir < 90) {
+ x += change * v;
+ y -= Math.tan(Math.toRadians(dir)) * change * v;
+ } else if(dir >= 90 && dir < 180) {
+ x -= Math.tan(Math.toRadians(dir-90)) * change * v;
+ y -= change * v;
+ } else if(dir >= 180 && dir < 270) {
+ x -= change * v;
+ y += Math.tan(Math.toRadians(dir-180)) * change * v;
+ } else if(dir >= 270 && dir < 360) {
+ x += Math.tan(Math.toRadians(dir-270)) * change * v;
+ y += change * v;
+ } else {
+ System.out.println("Invalid angle! (float, 0<=angle<=360)");
+ }
+ System.out.println("X = " + x + ", Y = " + y + ", fps = " + delta/1e9);
+ }
+
+ public int getX() {
+ return Math.round(x);
+ }
+
+ public int getY() {
+ return Math.round(y);
+ }
+
+ public long getDelta() {
+ long old = time;
+ time = System.nanoTime();
+ return time-old;
+ }
+}