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