blob: 83628a92e7cc7baa91e49b1b410002f9c4004d62 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
|
package de.lmu.ifi.tcs;
import java.awt.Color;
import java.awt.Point;
public class Ball {
private Point randpunkt;
private double pos_x;
private double pos_y;
private double dx;
private double dy;
private long letztesupdate;
private Color farbe = Color.BLACK;
public Ball(Point randpunkt, Point startpunkt, double dx, double dy, Color farbe) {
this.randpunkt = randpunkt;
this.pos_x = startpunkt.getX();
this.pos_y = startpunkt.getY();
this.dx = dx;
this.dy = dy;
this.letztesupdate = System.currentTimeMillis();
this.farbe = farbe;
}
public Ball(Point randpunkt, Point startpunkt, double dx, double dy) {
this(randpunkt, startpunkt, dx, dy, Color.BLACK);
}
/**
* Aktualisiert die Position des Balls gemäß der vestrichenen Zeit.
*/
public void updatePosition() {
long aktuellezeit = System.currentTimeMillis();
long verstrichen = aktuellezeit - letztesupdate;
pos_x += dx * verstrichen / 1000;
pos_y += dy * verstrichen / 1000;
letztesupdate = aktuellezeit;
if (pos_x<0 || pos_x>randpunkt.x) {
dx *= -1;
pos_x = (2*randpunkt.x - pos_x) % randpunkt.x;
}
if (pos_y<0 || pos_y>randpunkt.y) {
dy *= -1;
pos_y = (2*randpunkt.y - pos_y) % randpunkt.y;
}
}
/**
* @return letzte Position des Balles
*/
public Point holePosition() {
return new Point((int) Math.round(pos_x), (int) Math.round(pos_y));
}
/**
* @return aktuelle Farbe des Balls
*/
public Color getFarbe() {
return farbe;
}
/**
* Wechselt die Farbe des Balls
*/
public void wechsleFarbe() {
if (this.farbe.equals(Color.RED)) {
this.farbe = Color.GREEN;
} else if (this.farbe.equals(Color.GREEN)) {
this.farbe = Color.BLUE;
} else if (this.farbe.equals(Color.BLUE)) {
this.farbe = Color.ORANGE;
} else {
this.farbe = Color.RED;
}
}
}
|