summaryrefslogtreecommitdiff
path: root/ws2015/eip/blaetter/10/1/de/lmu/ifi/tcs/Ball.java
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;
		}

	}
}