Auf Thema antworten

[code=Java]import java.awt.*;


public class ProtokollFenster extends Frame {

   

    ProtokollMosaik pm;

    FarbMosaik fm;

   

    Mosaik mm;

   

    public ProtokollMosaik getProtokollMosaik() { return pm; }

   


    public ProtokollFenster(String titel, int width, int raster, Color farbeRueck, Color farbeVor, int x, int y) {

       

        super(titel);

       

        this.setSize(width, width);

       

        pm = new ProtokollMosaik(raster, width, farbeRueck, farbeVor);

       

        this.add(pm);

       

        //fm.getMosaikModel().setProtokollModel (pf.getProtokollMosaik().getProtokollModel());

        pm.getProtokollModel().setMosaikModel (mm.getFarbMosaik().getMosaikModel());

       

        this.setLocation(x,y);

       

        this.setResizable(false);

       

        this.setVisible(true);

    }

}[/code]


[code=Java]import java.awt.Panel;

import java.awt.Color;

import java.awt.GridLayout;


public class FarbMosaik extends Panel{


    ModelIF mm;

    protected MosaikEventHandler eventHandler;


    public FarbMosaik(int raster, int breite, Color farbeRueck, Color farbeVor)

    {

        mm=new MosaikModel(raster, raster);

        eventHandler=new MosaikEventHandler(mm);

        setLayout(new GridLayout(raster, raster, 1, 1));

        int canvasBreite=breite/raster;

        for(int i=0; i<raster; i++)

        {

            for(int j=0; j<raster; j++)

            {

                MosaikCanvas mc = new MosaikCanvas(i, j, farbeRueck, farbeVor);

                mc.addMouseListener(eventHandler);

                mm.putMObj(i, j, mc);

                mc.setSize(canvasBreite, canvasBreite);

                add(mc);

            }

        }

    }   

       

    public MosaikModel getMosaikModel() { return (MosaikModel) mm;}

}[/code]


[code=Java]import java.awt.Panel;

import java.awt.Color;

import java.awt.GridLayout;


public class ProtokollMosaik extends Panel{


    ModelIF pm;

    protected MosaikEventHandler eventHandler;


    public ProtokollMosaik(int raster, int breite, Color farbeRueck, Color farbeVor)

    {

        pm=new ProtokollModel(raster, raster);

        eventHandler=new MosaikEventHandler(pm);

        setLayout(new GridLayout(raster, raster, 1, 1));

        int canvasBreite=breite/raster;

        for(int i=0; i<raster; i++)

        {

            for(int j=0; j<raster; j++)

            {

                MosaikCanvas mc = new MosaikCanvas(i, j, farbeRueck, farbeVor);

                mc.addMouseListener(eventHandler);

                pm.putMObj(i, j, mc);

                mc.setSize(canvasBreite, canvasBreite);

                add(mc);

            }

        }

    }

   

    public ProtokollModel getProtokollModel() { return (ProtokollModel) pm;}  

}[/code]


[code=Java]public class ProtokollModel implements ModelIF{

   

    MosaikIF[][] mObjects;

    int zeilen, spalten;

   

    MosaikModel mm;


    public ProtokollModel(int zeilen, int spalten)

    {

        this.zeilen=zeilen;

        this.spalten=spalten;

        mObjects = new MosaikIF[zeilen][spalten];

    }

   

       public void switchSeite (int zeile, int spalte)

      {


        if (!getMObj(zeile, spalte).getSeite())

        {

          invert (zeile, spalte);

        }


      }

   

    private void invert(int zeile, int spalte)

    {

        getMObj(zeile, spalte).switchSeite();

    }

   

    public void putMObj(int zeile, int spalte, MosaikIF mObj)

    {

        mObjects[zeile][spalte]=mObj;

    }

   

    public MosaikIF getMObj(int zeile, int spalte)

    {

        return mObjects[zeile][spalte];

    }

   

    public void action(int zeile, int spalte)

    {

        switchSeite(zeile, spalte);


        if (mm != null)

        {

          mm.action (zeile, spalte);

        }

      }

     

      public void setMosaikModel (MosaikModel mosaikModel)

    {

        mm = mosaikModel;

      }

}[/code]


[code=Java]public class MosaikModel implements ModelIF{

   

    MosaikIF[][] mObjects;

    int zeilen, spalten;

   

    private ProtokollModel pm;


    public MosaikModel(int zeilen, int spalten)

    {

        this.zeilen=zeilen;

        this.spalten=spalten;

        mObjects = new MosaikIF[zeilen][spalten];

    }

   

    public void switchNachbarn(int zeile, int spalte)

    {

        //erste Zeile: Mitte, links, rechts

        if(zeile-1 >=0)

        {

            invert(zeile-1, spalte);

            if(spalte-1 >=0)

            {

                invert(zeile-1, spalte-1);

            }

            if(spalte+1 < spalten)

            {

                invert(zeile-1, spalte+1);

            }

        }

       

        //zweite Zeile: links, rechts

        if(spalte-1 >=0)

        {

            invert(zeile, spalte-1);

        }

       

        if(spalte+1 <spalten)

        {

            invert(zeile, spalte+1);

        }

       

        //dritte Zeile: Mitte, links rechts

        if(zeile+1 <zeilen)

        {

            invert(zeile+1, spalte);

            if(spalte-1 >=0)

            {

                invert(zeile+1, spalte-1);

            }

           

            if(spalte+1 <spalten)

            {

                invert(zeile+1, spalte+1);

            }

        }       

    }

   

    private void invert(int zeile, int spalte)

    {

        getMObj(zeile, spalte).switchSeite();

    }

   

    public void putMObj(int zeile, int spalte, MosaikIF mObj)

    {

        mObjects[zeile][spalte]=mObj;

    }

   

    public MosaikIF getMObj(int zeile, int spalte)

    {

        return mObjects[zeile][spalte];

    }

   

    public void action(int zeile, int spalte)

    {

        switchNachbarn(zeile, spalte);

       

        if (pm != null)

        {

          pm.action (zeile, spalte);

        }

      }

     

      public void setProtokollModel (ProtokollModel protocolModel)

    {

        pm = protocolModel;

      }

}[/code]


[code=Java]import java.awt.Color;

import java.applet.Applet;

import java.awt.Point;

import java.awt.Rectangle;


public class Mosaik extends Applet{


    private Color farbeRueck, farbeVor;

    private int raster;

    private String temp2;


    ProtokollFenster pf;

   

    ProtokollModel pm;

   

    FarbMosaik fm;

   

    public FarbMosaik getFarbMosaik() { return fm; }

   

    public void init()

    {

        resize(250, 280);

       

        String temp = getParameter("raster");

        temp2 = getParameter("protokollfenster");

       

        try{

            raster=Integer.parseInt(temp);

        } catch(NumberFormatException nfe)

        {

            raster=5;

            System.out.println("Default="+raster+" gesetzt. NumberFormatException: "+nfe.getMessage());

        }

    }

   

    public void start()

    {

       

        farbeRueck = new Color(230, 30, 50);

        farbeVor = new Color(50, 210, 30); 

       

        FarbMosaik fm = new FarbMosaik(raster, getSize().width, farbeRueck, farbeVor);

        add(fm);

       

        if(temp2.compareTo("on") == 0)

        {

               Rectangle bounds = this.getBounds();

               Point p = this.getLocation();

           

            pf = new ProtokollFenster("Protokollfenster", getSize().width, raster, farbeRueck, farbeVor, p.x+bounds.width+7, p.y);

           

           

            fm.getMosaikModel().setProtokollModel (pf.getProtokollMosaik().getProtokollModel());

        }

    }   

}[/code]



Oben