Hallo erst mall
Ich habe eine aufgabe in meinem studium
Hier ist mall mein Brogram.
hier ist das Bield :
http://www.java-forum.org/asset.php?fid=7503&uid=49725&d=1427965076
Das mall mein Mosaik spiel mit ausgabe der Versuche .
Und jetz kom ich zu meiner eigendlichen frage .
Wie mach ich das am besten das ich die spalte unt zeiler der geklikten felder speicher und einzeln am schlus ausgebe .
Ich würde mich freuen wen mier wer helfen kann.
LG Christoph
Ich habe eine aufgabe in meinem studium
Hier ist mall mein Brogram.
Java:
import java.awt.Color;
import java.awt.Image;
import java.awt.Component;
import java.applet.Applet;
public class Mosaik extends Applet implements SteuerIF
{
private SraristikModel statistik;
private int raster ;
private String bildName;
private Image image ;
private BildMosaik bm;
private FarbMosaik fm;
private VorschauCanvas vorschauBild;
private boolean zuletztBield;
private Color farbeRueckseite;
private Color farbeVorderseite;
private Component steuerPanel;
public void init()
{
String temp = getParameter("raster");
try
{
raster = Integer.parseInt(temp);
}
catch(NumberFormatException nfe)
{
raster=4;
System.out.println("Raster auf default ="+raster+" gesetzt.");
}
statistik = new StatistikModel();
fm.getEventHandler().addModel(satistik);
bildName =getParameter("bildName");
farbeRueckseite = new Color(230,30,50);
farbeVorderseite = new Color(50,210,30);
image = this.getImage(getCodeBase(),bildName);
image = ImageHandler.trackImage(image,this);
bm = new BildMosaik(raster,farbeRueckseite,image);
vorschauBild = new VorschauCanvas(image);
add(vorschauBild);
steuerPanel = new SteuerPanel(this);
add(steuerPanel);
}
public void startGame(int raster ,boolean modus)
{
if(vorschauBild != null)
{
remove(vorschauBild);
vorschauBild = null;
}
else
{
if(zuletztBield)
remove(bm);
else
remove(fm);
}
if(modus)
{
bm = new BildMosaik(raster,farbeRueckseite,image);
add(bm);
zuletztBield = true;
}
else
{
fm = new FarbMosaik(raster,image.getWidth(this),farbeRueckseite,farbeVorderseite);
add(fm);
zuletztBield = false;
}
add(steuerPanel);
validate();
}
public void resetGame()
{
validate();
}
public void destroy
{
System.out.println(statistik.getStatistikInfo());
}
}
import java.awt.Color;
import java.awt.Image;
import java.awt.Component;
import java.applet.Applet;
public class Mosaik extends Applet implements SteuerIF
{
private SraristikModel statistik;
private int raster ;
private String bildName;
private Image image ;
private BildMosaik bm;
private FarbMosaik fm;
private VorschauCanvas vorschauBild;
private boolean zuletztBield;
private Color farbeRueckseite;
private Color farbeVorderseite;
private Component steuerPanel;
public void init()
{
String temp = getParameter("raster");
try
{
raster = Integer.parseInt(temp);
}
catch(NumberFormatException nfe)
{
raster=4;
System.out.println("Raster auf default ="+raster+" gesetzt.");
}
statistik = new StatistikModel();
fm.getEventHandler().addModel(satistik);
bildName =getParameter("bildName");
farbeRueckseite = new Color(230,30,50);
farbeVorderseite = new Color(50,210,30);
image = this.getImage(getCodeBase(),bildName);
image = ImageHandler.trackImage(image,this);
bm = new BildMosaik(raster,farbeRueckseite,image);
vorschauBild = new VorschauCanvas(image);
add(vorschauBild);
steuerPanel = new SteuerPanel(this);
add(steuerPanel);
}
public void startGame(int raster ,boolean modus)
{
if(vorschauBild != null)
{
remove(vorschauBild);
vorschauBild = null;
}
else
{
if(zuletztBield)
remove(bm);
else
remove(fm);
}
if(modus)
{
bm = new BildMosaik(raster,farbeRueckseite,image);
add(bm);
zuletztBield = true;
}
else
{
fm = new FarbMosaik(raster,image.getWidth(this),farbeRueckseite,farbeVorderseite);
add(fm);
zuletztBield = false;
}
add(steuerPanel);
validate();
}
public void resetGame()
{
validate();
}
public void destroy
{
System.out.println(statistik.getStatistikInfo());
}
}
import java.awt.event.MouseListener;
import java.awt.event.MouseEvent;
import java.util.Hashtable;
import java.util.Enumeration;
public class MosaikEventHandler implements MouseListener
{
Hashtable modelTable;
Object key;
public MosaikEventHandler(ModelIF model)
{
modelTable = new Hashtable();
addModel(model);
}
public void addModel(ModelIF model)
{
key = new Integer(model.hashCode());
modelTable.put(key,model);
}
public ModelIF removeModle(ModelIF model)
{
key = new Integer(model.hashCode());
return(ModelIF)modelTable.remove(key);
}
public void mouseEntered(MouseEvent me)
{}
public void mouseClicked(MouseEvent me)
{}
public void mouseExited(MouseEvent me)
{}
public void mousePressed(MouseEvent me)
{}
public void mouseReleased(MouseEvent me)
{
int zeile = ((MosaikIF)me.getSource()).getZeile();
int spalte = ((MosaikIF)me.getSource()).getSpalte();
Enumeration enum = modelTable.keys();
while(enum.hasMoreElements())
{
key = enum.nextElement();
((ModelIF)modelTable.get(key)).action(zeile,spalte);
}
}
}
public interface MosaikIF
{
boolean isVorderseite();
int getZeile();
int getSpalte();
void switchSeite();
}
public class MosaikModel implements ModelIF
{
MosaikIF[][]mObjects;
private int zeilen,spalten;
public MosaikModel(int zeilen, int spalten)
{
this.zeilen=zeilen;
this.spalten=spalten;
mObjects= new MosaikIF[zeilen][spalten];
}
public void switchNachbern(int zeile,int spalte)
{
//Erste zeile
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);
}
//2 Zeile
if(spalte-1>=0)
{
invert(zeile,spalte-1);
if(spalte+1< spalten)
invert(zeile,spalte+1);
}
//3 Zeile
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);
}
}
private void invert(int zeile, int spalte)
{
mObjects[zeile][spalte].switchSeite();
}
public void putObj(int zeile,int spalte, MosaikIF mObj)
{
mObjects [zeile][spalte]=mObj;
}
public void action(int zeile ,int spalte)
{
this.switchNachbern(zeile,spalte);
}
}
interface SteuerIF{
public void startGame(int raster,boolean modus);
public void resetGame();
}
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.awt.*;
import java.lang.NumberFormatException;
public class SteuerPanel extends Panel implements ActionListener
{
Label labRaster ;
TextField tfRaster;
Checkbox checkBild;
Button bStart;
Button bReset;
private int raster;
private boolean mitBild;
private SteuerIF container;
public SteuerPanel(SteuerIF container)
{
this.container=container;
setLayout(new FlowLayout());
setFont(new Font("Dialog",Font.BOLD,12));
labRaster = new Label("Felder je zeile und Spalte : ",Label.CENTER);
raster = 5;
tfRaster = new TextField(Integer.toString(raster));
checkBild = new Checkbox("Mit Bild spilen?",true);
bStart = new Button("Start");
bStart.addActionListener(this);
bReset = new Button("Reset");
bReset.addActionListener(this);
startKonfiguration();
}
public void startKonfiguration()
{
remove(bReset);
add(labRaster);
add(tfRaster);
add(checkBild);
add(bStart);
tfRaster.setText(Integer.toString(raster));
tfRaster.selectAll();
tfRaster.requestFocus();
}
public void resetKonfiguration()
{
remove(labRaster);
remove(tfRaster);
remove(checkBild);
remove(bStart);
add(bReset);
}
public void actionPerformed(ActionEvent ae)
{
if (ae.getSource()==bStart)
{
try
{
raster= Integer.parseInt(tfRaster.getText().trim());
}
catch(NumberFormatException ife)
{
raster=5;
}
mitBild=checkBild.getState();
resetKonfiguration();
container.startGame(raster,mitBild);
}
if(ae.getSource()==bReset)
{
startKonfiguration();
container.resetGame();
}
}
}
public interface ModelIF
{
void action(int zeile , int spalte );
void putObj(int zeile , int spalte , MosaikIF mObj);
}
import java.awt.MediaTracker;
import java.awt.Image;
import java.awt.Component;
public class ImageHandler
{
public static Image trackImage(Image image,Component comp)
{
MediaTracker mediaTracker = new MediaTracker(comp);
mediaTracker.addImage(image,0);
try
{
mediaTracker.waitForID(0);
return image;
}
catch(InterruptedException ie)
{
System.out.println("Bildladevorgang unterbrochen: "+ie.getMessage());
return null;
}
}
}
import java.awt.Color;
import java.awt.GridLayout;
import java.awt.Panel;
public class FarbMosaik extends Panel
{
private ModelIF mosaikModel;
private MosaikEventHandler eventHandler;
public MosaikEventHandler getEventHandler()
{
return eventHandler;
}
public FarbMosaik(int raster ,int breite,Color farbeRueckseite,Color farbeVorderseite)
{
mosaikModel = new MosaikModel(raster,raster);
eventHandler = new MosaikEventHandler(mosaikModel);
this.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,farbeRueckseite,farbeVorderseite);
mc.addMouseListener(eventHandler);
mosaikModel.putObj(i,j,mc);
mc.setSize(canvasBreite,canvasBreite);
this.add(mc);
}
}
}
}
import java.awt.GridLayout;
import java.awt.Color;
import java.awt.Image;
import java.awt.Panel;
import java.awt.image.CropImageFilter;
import java.awt.image.FilteredImageSource;
import java.awt.image.ImageFilter;
import java.awt.image.ReplicateScaleFilter;
public class BildMosaik extends Panel
{
private ModelIF mosaikModel;
private MosaikEventHandler eventHandler;
public BildMosaik(int raster ,Color farbeRueckseite,Image image)
{
this.setLayout(new GridLayout(raster,raster));
mosaikModel = new MosaikModel(raster,raster);
eventHandler = new MosaikEventHandler(mosaikModel);
int imageWidth = image.getWidth(this);
if((imageWidth % raster) !=0)
{
imageWidth = (imageWidth/raster)*raster ;
}
int bildCanvasBreite = imageWidth/raster;
ImageFilter scaleFilter = new ReplicateScaleFilter(imageWidth,imageWidth);
Image volbild = this.createImage(new FilteredImageSource(image.getSource(),scaleFilter));
for(int i = 0;i<raster;i++)
{
for(int j=0;j<raster;j++)
{
BildCanvas bc = new BildCanvas(i,j,farbeRueckseite);
ImageFilter cropImageFilter = new CropImageFilter(j * bildCanvasBreite,i * bildCanvasBreite, bildCanvasBreite-1,bildCanvasBreite -1);
Image canvasImage = bc.createImage(new FilteredImageSource(volbild.getSource(),cropImageFilter));
bc.setCanvasImage(canvasImage);
bc.setSize(bildCanvasBreite,bildCanvasBreite);
bc.addMouseListener(eventHandler);
mosaikModel.putObj(i,j,bc);
this.add(bc);
}
}
}
}
import java.awt.Canvas;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Image;
public class BildCanvas extends Canvas implements MosaikIF
{
private Image canvasImage;
private Color farbRueckseite;
private Graphics grOffScreen;
private Image imageOffScreen;
public Color getFarbe()
{
return farbRueckseite;
}
public void setFarbe(Color inValue)
{
farbRueckseite=inValue;
}
private boolean vorderseite;
public boolean isVorderseite()
{
return vorderseite;
}
public void switchSeite()
{
vorderseite=!vorderseite;
repaint();
}
private int zeile,spalte;
public int getZeile()
{
return zeile;
}
public int getSpalte()
{
return spalte;
}
public int setZeile(int zeile)
{
this.zeile = zeile;
return zeile;
}
public int setSpalte(int spalte)
{
this.spalte = spalte;
return spalte;
}
public BildCanvas(int zeile , int spalte ,Color farbeRueckseite)
{
setZeile(zeile);
setSpalte(spalte);
setFarbe(farbeRueckseite);
}
public void setCanvasImage(Image inImage)
{
canvasImage = inImage;
}
public void paint(Graphics g)
{
if (!(canvasImage.getWidth(this)>0))return;
if(grOffScreen == null)
createOffScreenImage();
if (vorderseite)
{
grOffScreen.drawImage(canvasImage,0,0,this);
}
else
{
grOffScreen.setColor(getFarbe());
grOffScreen.fillRect(0,0,getSize().width,getSize().height);
}
g.drawImage(imageOffScreen,0,0,this);
}
public void update(Graphics g)
{
paint(g);
}
private void createOffScreenImage()
{
int breite = canvasImage.getWidth(this);
imageOffScreen = createImage(breite,breite);
grOffScreen=imageOffScreen.getGraphics();
}
}
public class StatistikModel implements ModelIF
{
private int versuche;
String returnString = "Anzahl Versuche: ";
public String StatistikModel()
{
returnString += versuche;
returnString += "\n";
return returnString;
}
public void action(int zeile,int spalte)
{
versuche++;
}
public void putObj(int zeile,int spalte,MosaikIF mObj) {
}
}
hier ist das Bield :
http://www.java-forum.org/asset.php?fid=7503&uid=49725&d=1427965076
Das mall mein Mosaik spiel mit ausgabe der Versuche .
Und jetz kom ich zu meiner eigendlichen frage .
Wie mach ich das am besten das ich die spalte unt zeiler der geklikten felder speicher und einzeln am schlus ausgebe .
Ich würde mich freuen wen mier wer helfen kann.
LG Christoph
Zuletzt bearbeitet: