summaryrefslogtreecommitdiff
path: root/ws2015/eip
diff options
context:
space:
mode:
Diffstat (limited to 'ws2015/eip')
-rw-r--r--ws2015/eip/blaetter/10/1/de/lmu/ifi/tcs/HuepfendeBaelle.java58
1 files changed, 41 insertions, 17 deletions
diff --git a/ws2015/eip/blaetter/10/1/de/lmu/ifi/tcs/HuepfendeBaelle.java b/ws2015/eip/blaetter/10/1/de/lmu/ifi/tcs/HuepfendeBaelle.java
index f6e1eef..a5f1ce8 100644
--- a/ws2015/eip/blaetter/10/1/de/lmu/ifi/tcs/HuepfendeBaelle.java
+++ b/ws2015/eip/blaetter/10/1/de/lmu/ifi/tcs/HuepfendeBaelle.java
@@ -8,8 +8,18 @@ import java.awt.geom.Ellipse2D;
8import java.util.ArrayList; 8import java.util.ArrayList;
9import java.util.Random; 9import java.util.Random;
10 10
11/* Änderungen:
12 * - Runnable interface für HuepfendeBaelle
13 * - Neue Konstante maxFramerate & update-frequenz limitiert auf maxFramerate updates/sekunde
14 * - Auslagerung der update & zeichen-schleife in run()
15 * - Aufrufen von run() in neuem thread
16 *
17 * Hinzugefügte Methoden: run
18 * Veränderte Methoden: main
19 */
11 20
12public class HuepfendeBaelle { 21
22public class HuepfendeBaelle implements Runnable {
13 23
14 private ArrayList<Ball> baelle; 24 private ArrayList<Ball> baelle;
15 private GraphicsWindow gw; 25 private GraphicsWindow gw;
@@ -19,6 +29,9 @@ public class HuepfendeBaelle {
19 private final static int max_y = 480; 29 private final static int max_y = 480;
20 private final static int ballgroesse = 20; 30 private final static int ballgroesse = 20;
21 private final static int knopfgroesse = 40; 31 private final static int knopfgroesse = 40;
32
33 private final static int maxFramerate = 30;
34
22 /** 35 /**
23 * @param args 36 * @param args
24 * @throws InterruptedException 37 * @throws InterruptedException
@@ -41,14 +54,9 @@ public class HuepfendeBaelle {
41 54
42 HuepfendeBaelle hb = new HuepfendeBaelle(baelle, gw); 55 HuepfendeBaelle hb = new HuepfendeBaelle(baelle, gw);
43 56
57 Thread draw = new Thread(hb);
58 draw.start();
44 59
45 //while( true ) {
46 for (Ball ball : baelle) {
47 ball.updatePosition();
48 }
49 hb.zeichneAlleBaelle();
50 //}
51
52 // Vearbeitung der Mouse-clicks. 60 // Vearbeitung der Mouse-clicks.
53 Point click = gw.mouseClick(); 61 Point click = gw.mouseClick();
54 Random zufall = new Random(); 62 Random zufall = new Random();
@@ -57,20 +65,36 @@ public class HuepfendeBaelle {
57 gw.setText("Treffer! ("+ click.x + "," + click.y +")"); 65 gw.setText("Treffer! ("+ click.x + "," + click.y +")");
58 } else { 66 } else {
59 gw.setText("Daneben! ("+ click.x + "," + click.y +")"); 67 gw.setText("Daneben! ("+ click.x + "," + click.y +")");
60 b = new Ball(randpunkt, click, (zufall.nextDouble()-0.5)*200, (zufall.nextDouble()-0.5)*200); 68 synchronized (hb) {
61 hb.plusBall(b); 69 b = new Ball(randpunkt, click, (zufall.nextDouble()-0.5)*200, (zufall.nextDouble()-0.5)*200);
62 } 70 hb.plusBall(b);
63 for (Ball ball : baelle) { 71 }
64 ball.updatePosition();
65 } 72 }
66 hb.zeichneAlleBaelle(); 73 click = gw.mouseClick();
67 click = gw.mouseClick(); // Warten auf Mausklick
68 } 74 }
69 gw.setText("Auf Wiedersehen!"); 75
70 gw.sleep(8000); 76 draw.interrupt();
77
78 // gw.setText("Auf Wiedersehen!");
79 // gw.sleep(8000);
80
71 81
72 System.exit(0); 82 System.exit(0);
73 } 83 }
84
85 public void run() {
86 try {
87 while(! Thread.interrupted()) {
88 synchronized (this) {
89 for (Ball ball : baelle) {
90 ball.updatePosition();
91 }
92 zeichneAlleBaelle();
93 }
94 Thread.sleep(1000/maxFramerate);
95 }
96 } catch (InterruptedException e) {};
97 }
74 98
75 /** 99 /**
76 * @param baelle 100 * @param baelle