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
|