import java.awt.*; import java.awt.event.*; /** Wuerfelbrett fuer Kniffel (Teil 9: Wuerfel interaktiv) @author Benedikt Großer, Holger Arndt @version 02.05.2003 */ class Wuerfelbrett extends Panel { /* T=1, L=1 */ int anzahlWuerfe = 0; int[] wuerfel = { /* T=2, L=2 */ 0, 0, 0, 0, 0 } /* T=2, L=2 */ ; boolean[] fest = { /* T=2, L=3 */ false, false, false, false, false } /* T=2, L=3 */ ; // Konstruktor Wuerfelbrett() { /* T=2, L=4 */ addMouseListener(new MouseAdapter() { /* T=3, L=5 */ public void mousePressed(MouseEvent me) { /* T=4, L=6 */ int mx = me.getX(); int my = me.getY(); if (my >= 10 && my <= 50) for (int i = 0; i < wuerfel.length; i++) if (mx >= 10 + i * 50 && mx <= 50 + i * 50) if (wuerfel[i] != 0) { /* T=5, L=7 */ fest[i] = !fest[i]; repaint(10 + 50 * i, 10, 40, 40); } /* T=5, L=7 */ } /* T=4, L=6 */ } /* T=3, L=5 */ ); } /* T=2, L=4 */ // Methode paint() wird ueberlagert public void paint(Graphics g) { /* T=2, L=8 */ // Uebermale alles, was vorher war, // mit einem grossen weissen Rechteck. g.setColor(Color.white); g.fillRect(10, 10, 241, 41); // Male nun die Wuerfel zeichneWuerfel(g); } /* T=2, L=8 */ // Erweiterung um eigene Methoden public void neuesSpiel() { /* T=2, L=9 */ for (int i = 0; i < wuerfel.length; i++) { /* T=3, L=10 */ wuerfel[i] = 0; fest[i] = false; } /* T=3, L=10 */ anzahlWuerfe = 0; repaint(); } /* T=2, L=9 */ public void wuerfeln() { /* T=2, L=11 */ double zufallszahl; if (anzahlWuerfe < 3) { /* T=3, L=12 */ for (int i = 0; i < wuerfel.length; i++) { /* T=4, L=13 */ if (!fest[i]) { /* T=5, L=14 */ zufallszahl = Math.ceil(6.0 * Math.random()); wuerfel[i] = (int)Math.round(zufallszahl); } /* T=5, L=14 */ //if } /* T=4, L=13 */ // for } /* T=3, L=12 */ // if anzahlWuerfe++; repaint(); } /* T=2, L=11 */ public void maleAugen(Graphics g, int x, int y, int Augen, boolean f) { /* T=2, L=15 */ if (Augen != 0) { /* T=3, L=16 */ if (f) g.setColor(Color.lightGray); else g.setColor(Color.blue); // links oben if (Augen != 1) g.fillOval(x + 3, y + 3, 8, 8); // rechts oben if (Augen >= 4) g.fillOval(x + 29, y + 3, 8, 8); // links mitte if (Augen == 6) g.fillOval(x + 3, y + 16, 8, 8); // mitte mitte if (Augen % 2 == 1) g.fillOval(x + 16, y + 16, 8, 8); // rechts mitte if (Augen == 6) g.fillOval(x + 29,y + 16, 8, 8); // links unten if (Augen >= 4) g.fillOval(x + 3, y + 29, 8, 8); // rechts unten if (Augen != 1) g.fillOval(x + 29, y + 29, 8, 8); g.setColor(Color.black); } /* T=3, L=16 */ // if (Augen != 0) } /* T=2, L=15 */ public void zeichneWuerfel(Graphics g) { /* T=2, L=17 */ g.setColor(Color.black); for (int i = 0; i < 5; i++) { /* T=3, L=18 */ g.drawRect(10 + 50 * i, 10, 40, 40); maleAugen(g, 10 + 50 * i, 10, wuerfel[i], fest[i]); } /* T=3, L=18 */ } /* T=2, L=17 */ } /* T=1, L=1 */ // classWuerfelbrett extends Panel |