diff options
Diffstat (limited to 'src/aufgaben/blatt2/Objekt.java')
-rwxr-xr-x | src/aufgaben/blatt2/Objekt.java | 65 |
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;
+ }
+}
|