Listing von ../Wuerfelbrett.java

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