/*Dies ist eine inoffizielle Musterlösung für das Zielscheibenbsp
 *vom 14.01.02. Eine gute Übung stellt es dar, das Programm
 *so umzuschreiben, dass das weiße Zentrum korrekt dargestellt
 *wird.
 *Viel Glück bei der Prüfung,
 *Patrick Leypold pac1@gmx.at
 */

import java.awt.*;
import java.awt.event.*;

public class eprog03 extends Frame implements ActionListener
{
    MyCanvas canvas;
    Button plus, minus;
    Panel panel;

    public static void main(String args[])
    {
    	new eprog03();
    }

    eprog03()
    {
	canvas = new MyCanvas();
    	panel = new Panel();
	panel.setLayout(new BorderLayout());
	plus = new Button("plus");
	minus = new Button("minus");
	panel.add("North", plus);
	panel.add("South", minus);
	plus.addActionListener(this);
	minus.addActionListener(this);
        addWindowListener(new Closer());
	add("East", panel);
	add("Center", canvas);
	pack();
	show();
    }

    public void actionPerformed(ActionEvent e)
    {
    	int Wertzwischeneinsunddrei;
	double i = Math.random()*10;
	if(i >= 0 && i <= 3)
		Wertzwischeneinsunddrei = 1;
	else if(i >= 3 && i <= 7)
		Wertzwischeneinsunddrei = 2;
	else
		Wertzwischeneinsunddrei = 3;

	Button b = (Button)e.getSource();
	if(b == plus)
        {
		canvas.Anzahl = canvas.Anzahl + Wertzwischeneinsunddrei;
                canvas.repaint();
        }
	else
        {
		canvas.Anzahl = canvas.Anzahl - Wertzwischeneinsunddrei;
                canvas.repaint();
        }
    }
}

class Closer extends WindowAdapter
{
    public void windowClosing(WindowEvent e)
    {
        System.exit(0);
    }
}

class MyCanvas extends Canvas
{
    MyCanvas()
    {
        setSize(400, 400);
    }

    int Anzahl = 9;
    int BreitederKreise = 20;
    int x = 0;
    int y = 0;
    int höhe = 400;
    int breite = 400;

    public void paint(Graphics g)
    {
        x = 0;
        y = 0;
        Dimension größe = new Dimension();
        größe = super.getSize();
        höhe = größe.height;
        breite = größe.width;
        BreitederKreise = (breite/2)/Anzahl;

        if(Anzahl % 2 == 1)//damit außen immer ein roter Kreis ist
            if(Anzahl == 13)
                Anzahl--;
            else
		Anzahl++;

        if(Anzahl >= 2 && Anzahl <= 13)
        {
            for(int i = 0; i < Anzahl; i++)
            {
                if(i % 2 == 0)
                    g.setColor(Color.red);
                else
                    g.setColor(Color.white);

                g.fillOval(x,y,höhe,breite);
                x += BreitederKreise;
                y += BreitederKreise;
                breite = breite - 2*BreitederKreise;
                höhe = höhe - 2*BreitederKreise;
            }
        }
        else
        {
            System.out.println("Nur Zahlen zwischen und exklusive 1 und 14.");
        }
    }
}
