import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

/**
   Wuerfelbrett fuer Kniffel
   @author Holger Arndt
   @version 13.06.2003
*/
class Wuerfelbrett extends JPanel
{ 
  int anzahlWuerfe = 0;
  int[] wuerfel = { 0, 0, 0, 0, 0 };
  boolean[] fest = { false, false, false, false, false };

  // Konstruktor
  Wuerfelbrett()
  {
    setBackground(Color.white);
    //setOpaque(false);
    setPreferredSize(new Dimension(270, 60));
    addMouseListener(new MouseAdapter()
      {
	public void mousePressed(MouseEvent me)
	{
	  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)
		  {
		    fest[i] = !fest[i];
		    repaint(10 + 50 * i, 10, 40, 40);
		  }
	}
      });
  }

  // Methode paintComponent() wird ueberlagert
  public void paintComponent(Graphics g)
  {
    super.paintComponent(g); // oder im Konstr. setOpaque(false)
    // 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);
  }
  
  // Erweiterung um eigene Methoden
  public void neuesSpiel()
  {
    for (int i = 0; i < wuerfel.length; i++)
      {
	wuerfel[i] = 0; 
	fest[i] = false;
      }
    anzahlWuerfe = 0;
    repaint();
  }

  public void wuerfeln()
  {
    double zufallszahl;
    if (anzahlWuerfe < 3)
      { 
	for (int i = 0; i < wuerfel.length; i++)
	  { 
            if (!fest[i])
	      { 
		zufallszahl = Math.ceil(6.0 * Math.random());
		wuerfel[i] = (int)Math.round(zufallszahl); 
	      } //if 
          } // for 
      } // if 
    anzahlWuerfe++;
    repaint();
  }

  public void maleAugen(Graphics g, int x, int y, int Augen, boolean f)
  {
    if (Augen != 0)
      { 
        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);
      } // if (Augen != 0)
    }

  public void zeichneWuerfel(Graphics g)
  {
    g.setColor(Color.black);
    for (int i = 0; i < 5; i++)
      {
	g.drawRect(10 + 50 * i, 10, 40, 40);
	maleAugen(g, 10 + 50 * i, 10, wuerfel[i], fest[i]);
      }
    }
} // class Wuerfelbrett extends JPanel
