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; } }