aboutsummaryrefslogtreecommitdiff
path: root/PunchingBag/src/PunchingBag.java
blob: 7629afe2e41cfcc4369ea873ce1fa5031195f851 (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
80
81
82
83
84
85
86
87
88
89
import javax.swing.event.EventListenerList;

public class PunchingBag {
	protected EventListenerList listenerList = new EventListenerList();

	enum Colour {
		None, Red, Yellow, Green
	};

	/**
	 * Adds an <code>ActionListener</code> to the button.
	 * 
	 * @param l
	 *            the <code>ActionListener</code> to be added
	 */
	public void addButtonListener(ButtonListener l) {
		listenerList.add(ButtonListener.class, l);
	}

	public void setLED(byte x, byte y, byte intensity) {

	}

	public void drawRipple(byte x, byte y, byte intensity) {
		new Ripple(x, y, intensity);
	}

	class Ripple implements Runnable {
		double currentWidth;
		final byte x;
		final byte y;
		byte intensity;

		public Ripple(byte x, byte y, byte intensity) {
			this.x = x;
			this.y = y;
			this.intensity = intensity;
			new Thread(this).start();
		}

		@Override
		public void run() {
			Colour colour;
			boolean drawnSomething = true;

			while (drawnSomething) {

				if (intensity >= 10) {
					colour = Colour.Red;
				} else if (intensity >= 5) {
					colour = Colour.Yellow;
				} else {
					colour = Colour.Green;
				}

				drawnSomething = false;

				for (double i = 0; i < 360; i++) {
					int x = x + (int) Math.round(currentWidth * Math.cos(i));
					int y = y + (int) Math.round(currentWidth * Math.sin(i));

					if (x >= 0 && x <= 8 && y >= 0 && y <= 19) {
						// setLED(x, y, colour);
						drawnSomething = true;
					}

				}

				currentWidth += 0.1 + (currentWidth / 10);
				try {
					Thread.sleep(1000/60);
				} catch (InterruptedException e) {
					e.printStackTrace();
				}
			}
		}

	}

}

void CirclePulsate (int x, int y)
{
for ( int i= 0 ; i<= 15 ; i++ ) {
matrix. Clear ( ) ;
matrix. DrawEllipse ( AS1107:: Maxx / x , y ,i,i ) ;
matrix. Update ( ) ;
delay ( d ) ;
}