-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathZycie.java
More file actions
118 lines (99 loc) · 2.47 KB
/
Copy pathZycie.java
File metadata and controls
118 lines (99 loc) · 2.47 KB
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
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.MouseEvent;
import org.eclipse.swt.events.MouseListener;
import org.eclipse.swt.events.PaintEvent;
import org.eclipse.swt.events.PaintListener;
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.graphics.GC;
import org.eclipse.swt.widgets.Canvas;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
/**
*
*/
/**
* @author bajcik
*
*/
class Rysownik implements PaintListener {
Plansza plansza;
public Rysownik(Plansza plansza) {
this.plansza = plansza;
}
public void paintControl(PaintEvent e) {
GC gc = e.gc;
Color blue = e.display.getSystemColor(SWT.COLOR_BLUE);
gc.setBackground(blue);
for (int x=0; x<plansza.w; x++)
for (int y=0; y<plansza.h; y++)
if (plansza.plansza[x][y] == 1)
{
gc.fillRectangle(x*5, y*5, 3, 3);
gc.drawRectangle(x*5, y*5, 3, 3);
}
}
}
class Zegareczek implements Runnable {
Canvas canvas;
Plansza plansza;
int miliseconds;
int gens;
boolean goon;
public Zegareczek(Canvas canvas, Plansza plansza, int miliseconds, int gens) {
this.canvas = canvas;
this.miliseconds = miliseconds;
this.plansza = plansza;
this.gens = gens;
this.goon = true;
}
public void run()
{
if (!goon)
return;
plansza.NextGen(gens);
canvas.redraw();
canvas.getDisplay().timerExec(miliseconds, this);
}
public void stop() {
goon = false;
}
}
public class Zycie {
public static void main(String[] args) {
/* plansza */
Plansza plansza = new Plansza(250,250);
plansza.reguly = new Reguly("23/3");
plansza.losuj(1.2);
plansza.losuj(125,130,5,5, 1.2);
//plansza.NextGen(2);
/* grafika */
Display display = new Display();
Shell shell = new Shell(display);
shell.setText("Gra w życie");
Canvas canvas = new Canvas(shell, SWT.BORDER);
canvas.setBounds(5, 5, 700, 500);
canvas.addPaintListener(new Rysownik(plansza));
/* obsługa kroków */
canvas.setData("plansza", plansza);
canvas.addMouseListener(new MouseListener() {
public void mouseDown(MouseEvent e) {
((Plansza)e.widget.getData("plansza")).NextGen(1);
((Canvas)e.widget).redraw();
}
public void mouseUp(MouseEvent e) {
}
public void mouseDoubleClick(MouseEvent e) {
}
});
Zegareczek zegar = new Zegareczek(canvas, plansza, 100, 1);
zegar.run();
shell.open();
while (!shell.isDisposed())
{
if (!display.readAndDispatch())
display.sleep();
}
zegar.stop();
display.dispose();
}
}