From 84e220b332bfffb0f2dcc39b9697a6fd6691d265 Mon Sep 17 00:00:00 2001 From: Leonard Kugis Date: Mon, 25 Apr 2022 18:36:30 +0200 Subject: Initial commit --- src/aufgaben/blatt2/Aufgabe1.java | 64 ++++++++++++++++++++++++++++++++++++++ src/aufgaben/blatt2/Objekt.java | 65 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 129 insertions(+) create mode 100755 src/aufgaben/blatt2/Aufgabe1.java create mode 100755 src/aufgaben/blatt2/Objekt.java (limited to 'src/aufgaben/blatt2') diff --git a/src/aufgaben/blatt2/Aufgabe1.java b/src/aufgaben/blatt2/Aufgabe1.java new file mode 100755 index 0000000..014b2f6 --- /dev/null +++ b/src/aufgaben/blatt2/Aufgabe1.java @@ -0,0 +1,64 @@ +package aufgaben.blatt2; + +import java.awt.Color; +import java.awt.Graphics; +import java.awt.event.WindowAdapter; +import java.awt.event.WindowEvent; + +import aufgaben.Aufgabe; +import misc.Utils; + +public class Aufgabe1 extends Aufgabe { + + private final int width = 500, height = 500; + private boolean done = false; + private volatile Objekt o; + private String name; + + public Aufgabe1() { + name = "Blatt 2 - 1"; + this.setSize(width, height); + this.setTitle("Blatt 1 - Aufgabe 1"); + this.addWindowListener( + new WindowAdapter() { + @Override + public void windowClosing(WindowEvent e) { + System.out.println("close"); + done = true; + } + } + ); + } + + @Override + public boolean done() { + return done; + } + + public void paint(Graphics g) { + g.drawRect(o.getX(), o.getY(), 100, 100); + g.setColor(Color.BLACK); + } + + @Override + public String getName() { + return name; + } + + @Override + public void init() { + o = new Objekt(20, 200); + o.setMovement(0, 50); + + new Thread(new Runnable(){ + @Override + public void run() { + while(true) { + o.update(); + repaint(); + } + } + }).start(); + } + +} 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; + } +} -- cgit v1.2.1