Universität Paderborn - Home Universität Paderborn
Die Universität der Informationsgesellschaft

Objektorientierte Programmierung WS 2013/2014 - Datei KatzUndMaus.java

import java.awt.*;
import java.awt.event.*;
import java.util.Vector;
import java.util.Enumeration;

public class KatzUndMaus extends Frame
{
   public static final int FRAMEWIDTH  = 600;
   public static final int FRAMEHEIGHT = 400;
   public static final int SPEED       = 5;
   public static final int RADIUS      = 8;
   // die beiden Baelle
   private SpielBall ball1;
   private SpielBall ball2;
   // Für das DoubleBuffering
   private Graphics bufferGraphics;
   private Image    buffer;

   private void bufferInit ()
   {   // wir zeichnen in einen Puffer

      buffer         = this.createImage(FRAMEWIDTH, FRAMEHEIGHT);
      bufferGraphics = buffer.getGraphics();
   }

   public static void main (String[] args)
   {
      new KatzUndMaus().setVisible(true);
   }

   public KatzUndMaus ()
   {
      setTitle("Katz und Maus");
      setSize(FRAMEWIDTH, FRAMEHEIGHT);
      setBackground(Color.white);
      WindowListener wl = new WindowAdapter() {
            public void windowClosing(WindowEvent e) {
                System.exit(0);
            }
        };

        addWindowListener(wl);

      ball1 = new SpielBall(20, FRAMEHEIGHT - 20, RADIUS, 0, 0, FRAMEWIDTH,
                            FRAMEHEIGHT);

      ball1.setRolle(new Maus(ball1, this));
      ball1.setColor(Color.blue);

      ball2 = new SpielBall(FRAMEWIDTH - 20, 40, RADIUS, 0, 0, FRAMEWIDTH,
                            FRAMEHEIGHT);

      ball2.setRolle(new Katze(ball2, ball1));
      ball2.setColor(Color.red);
      repaint();
   }

   public void paint (Graphics g)
   {
      if (buffer == null) bufferInit();

      // loesche Puffer
      bufferGraphics.setColor(Color.white);
      bufferGraphics.fillRect(0, 0, FRAMEWIDTH, FRAMEHEIGHT);
      ball1.moveSpielBall();
      ball2.moveSpielBall();
      ball1.paintSpielBall(bufferGraphics);
      ball2.paintSpielBall(bufferGraphics);
      g.drawImage(buffer, 0, 0, this);
      repaint();

      try
      {
         Thread.sleep(10);
      }
      catch (InterruptedException e)
      {
         System.exit(0);
      }

      // Wenn das Spiel beendet ist, weil die Katze die
      // Maus gefangen hat, tauschen wir die Rollen und
      // fangen von vorne an.
      if (ball1.x() == ball2.x() && ball1.y() == ball2.y())
      {      // die Maus ist weg
         if (ball1.getRolle() instanceof Maus)
         {   // ball1 war die Maus, wird jetzt zur Katze
            ball1.setRolle(new Katze(ball1, ball2));
            // ball2 also zur neuen Maus
            ball2.setRolle(new Maus(ball2, this));
         }
         else
         {   // und andersrum: ball1 war also die Katze
            ball1.setRolle(new Maus(ball1, this));
            // ball2 wird jetzt Katze
            ball2.setRolle(new Katze(ball2, ball1));
         }

         // jeder in seine Ecke:
         ball1.moveTo(20 - RADIUS, FRAMEHEIGHT - 20 - RADIUS);
         ball2.moveTo(FRAMEWIDTH - 20 - RADIUS, 40 - RADIUS);
      }
   }

   public void update (Graphics g)
   {
      paint(g);
   }
}

Generiert mit Camelot | Probleme mit Camelot? | Geändert am: 05.12.2013