# Memory



## Guest (5. Jul 2006)

Hallo, 
Ich bin gerade dabei Memory zu programmieren. Ich habe für jede Karte ein Canvas verwendet ich nutze also 20 Canvas und wenn man ein Pärchen hat sollen sich die beiden gleichen aufgedeckten Karten löschen und das Hintergrundbild eines Panels, auf welchem sich die Canvas befinden, zum Vorschein kommen. Nun mein Problem:
Die Bilder werden bei 2 gleichen zwar gelöscht aber es bleibt jedes mal ein weißes feld an der Stelle zurück, an der sich das jewilige Canvas befand.


```
import java.applet.*; 
import java.applet.AudioClip;
import java.awt.BorderLayout;
import java.awt.Button;
import java.awt.Canvas;
import java.awt.Color;
import java.awt.Component;
import java.awt.Cursor;
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.GridLayout;
import java.awt.Image;
import java.awt.MediaTracker;
import java.awt.Panel;
import java.awt.Point;
import java.awt.PopupMenu;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.image.ImageObserver;
import java.net.MalformedURLException;
import java.net.URL;
 import javax.swing.*;
 import java.awt.*;

import javax.swing.JButton;
import javax.swing.border.BevelBorder;

import com.sun.media.sound.Toolkit;
public class memory extends Frame implements MouseListener{
 
 private Panel p=new Panel();
 private Component[] comp=new Component[2];
 private Component Comp0;
 private Component Comp1;
 private Image icon,icon2;
 private Image[] img=new Image[99];
 private Canvas[] cv=new Canvas[20];
 private boolean ersterKlick;
 private String a[]=new String[2];
 private String Karte0;
 private String Karte1;
 private Component aktcv;
 private JButton bt,bt2,bt3,bt4;
 private Component[] canvases;
 private boolean Spieler1;
 private String Spieler1zu1;
 private boolean Spieler2;
 private String Spieler2zu2;
 private JLabel l6;
 private CheckboxMenuItem miCars;
 private CheckboxMenuItem miAnimals;
 private boolean State0;
 private boolean State1;
 private Panel pf=new Panel();
 private Image imgf;
 private Frame fenster=new Frame();
 private Frame fensterfirst=new Frame();
 private Frame fenstername=new Frame();
 private Canvas cvf=new Canvas(); 
 private CheckboxGroup cb=new CheckboxGroup();
 public memory ()throws MalformedURLException{
 	
  bt=new JButton("KLICK");
  ersterKlick=true;
  p.setName("Panel");  
  p.setSize(p.getToolkit().getScreenSize());
  p.setLayout(new FlowLayout(FlowLayout.CENTER,5,5));
  MenuBar hauptmenue=new MenuBar();
  Menu menue1=new Menu("Kategorie");
  menue1.add(miCars = new CheckboxMenuItem("Cars"));
  menue1.add(miAnimals = new CheckboxMenuItem("Animals"));
  hauptmenue.add(menue1);
  setMenuBar(hauptmenue);
  setIcon();
  miCars.setState(true);
  miAnimals.setState(false);
  State0=miAnimals.getState();

  for(int i = 0; i < cv.length; i++)

  {
  	cv[i]= new Canvas();
    cv[i].setSize(200, 150);
    cv[i].addMouseListener(this);
    cv[i].addMouseListener(new MouseAdapter(){
    	  public void mouseEntered(MouseEvent evt){
    	   handcursor();   	   
    	  }
    });
    cv[i].addMouseListener(new MouseAdapter(){
    	  public void mouseExited(MouseEvent evt){
    	   defaultcursor();
    	  }
    });
    p.add(cv[i]);
  } 
  cv[0].setName("Karte0");
  cv[1].setName("Karte1");
  cv[2].setName("Karte2");
  cv[3].setName("Karte3");
  cv[4].setName("Karte4");
  cv[5].setName("Karte5");
  cv[6].setName("Karte6");
  cv[7].setName("Karte7");
  cv[8].setName("Karte8");
  cv[9].setName("Karte9");
  cv[10].setName("Karte0");
  cv[11].setName("Karte1");
  cv[12].setName("Karte2");
  cv[13].setName("Karte3");
  cv[14].setName("Karte4");
  cv[15].setName("Karte5");
  cv[16].setName("Karte6");
  cv[17].setName("Karte7");
  cv[18].setName("Karte8");
  cv[19].setName("Karte9");

  bt.setLocation(new Point(0,0));
  p.add(bt);
  titel();  
  add(p);

  cv[0].addMouseListener(new MouseAdapter(){
  public void mousePressed(MouseEvent evt){
  	if(State0){
  	paint0();
  	}else{
  		paint20();
  	}
   String aktKarte = evt.getComponent().getName();
   aktcv = evt.getComponent();
   System.out.println(aktKarte);
   System.out.println(aktcv);
   vergleichen(aktKarte,aktcv);
   panelhintergrund();
  }
    });
  cv[1].addMouseListener(new MouseAdapter(){
  public void mousePressed(MouseEvent evt){
  	if(State0){
  	  	paint1();
  	  	}else{
  	  		paint21();
  	  	}
   aktcv = evt.getComponent();
   String aktKarte = evt.getComponent().getName();
   System.out.println(aktKarte);
   System.out.println(aktcv);
   vergleichen(aktKarte,aktcv);
   }
    });
  cv[2].addMouseListener(new MouseAdapter(){
  public void mousePressed(MouseEvent evt){
  	if(State0){
  	  	paint2();
  	  	}else{
  	  		paint22();
  	  	}
   aktcv = evt.getComponent();
   String aktKarte = evt.getComponent().getName();
   System.out.println(aktKarte);
   vergleichen(aktKarte,aktcv);
   }
    });
  cv[3].addMouseListener(new MouseAdapter(){
  public void mousePressed(MouseEvent evt){
  	if(State0){
  	  	paint3();
  	  	}else{
  	  		paint23();
  	  	}
   aktcv = evt.getComponent();
   String aktKarte = evt.getComponent().getName();
   System.out.println(aktKarte);
   vergleichen(aktKarte,aktcv);
   }
    });
  cv[4].addMouseListener(new MouseAdapter(){
  public void mousePressed(MouseEvent evt){
  	if(State0){
  	  	paint4();
  	  	}else{
  	  		paint24();
  	  	}
   aktcv = evt.getComponent();
   String aktKarte = evt.getComponent().getName();
   System.out.println(aktKarte);
   vergleichen(aktKarte,aktcv);
   }
    });
  cv[5].addMouseListener(new MouseAdapter(){
  public void mousePressed(MouseEvent evt){
  	if(State0){
  	  	paint5();
  	  	}else{
  	  		paint25();
  	  	}
   aktcv = evt.getComponent();
   String aktKarte = evt.getComponent().getName();
   System.out.println(aktKarte);
   vergleichen(aktKarte,aktcv);
   }
    });
  cv[6].addMouseListener(new MouseAdapter(){
  public void mousePressed(MouseEvent evt){
  	if(State0){
  	  	paint6();
  	  	}else{
  	  		paint26();
  	  	}
   aktcv = evt.getComponent();
   String aktKarte = evt.getComponent().getName();
   System.out.println(aktKarte);
   vergleichen(aktKarte,aktcv);
   }
    });
  cv[7].addMouseListener(new MouseAdapter(){
  public void mousePressed(MouseEvent evt){
  	if(State0){
  	  	paint7();
  	  	}else{
  	  		paint27();
  	  	}
   aktcv = evt.getComponent();
   String aktKarte = evt.getComponent().getName();
   System.out.println(aktKarte);
   vergleichen(aktKarte,aktcv);
   }
    });
  cv[8].addMouseListener(new MouseAdapter(){
  public void mousePressed(MouseEvent evt){
  	if(State0){
  	  	paint8();
  	  	}else{
  	  		paint28();
  	  	}
   aktcv = evt.getComponent();
   String aktKarte = evt.getComponent().getName();
   System.out.println(aktKarte);
   vergleichen(aktKarte,aktcv);
   }
    });
  cv[9].addMouseListener(new MouseAdapter(){
  public void mousePressed(MouseEvent evt){
   if(State0){
  	paint9();
 	}else{
 		paint29();
 	}
   aktcv = evt.getComponent();
   String aktKarte = evt.getComponent().getName();
   System.out.println(aktKarte);
   vergleichen(aktKarte,aktcv);
   }
    });
  cv[10].addMouseListener(new MouseAdapter(){
  public void mousePressed(MouseEvent evt){
  	if(State0){
  	  	paint10();
  	  	}else{
  	  		paint30();
  	  	}
   aktcv = evt.getComponent();
   String aktKarte = evt.getComponent().getName();
   System.out.println(aktKarte);
   vergleichen(aktKarte,aktcv);
	panelhintergrund();
   }
    });
  cv[11].addMouseListener(new MouseAdapter(){
  public void mousePressed(MouseEvent evt){
  	if(State0){
  	  	paint11();
  	  	}else{
  	  		paint31();
  	  	}
   aktcv = evt.getComponent();
   String aktKarte = evt.getComponent().getName();
   System.out.println(aktKarte);
   vergleichen(aktKarte,aktcv);
   }
    });
  cv[12].addMouseListener(new MouseAdapter(){
  public void mousePressed(MouseEvent evt){
  	if(State0){
  	  	paint12();
  	  	}else{
  	  		paint32();
  	  	}
   aktcv = evt.getComponent();
   String aktKarte = evt.getComponent().getName();
   System.out.println(aktKarte);
   vergleichen(aktKarte,aktcv);
   }
    });
  cv[13].addMouseListener(new MouseAdapter(){
  public void mousePressed(MouseEvent evt){
  	if(State0){
  	  	paint13();
  	  	}else{
  	  		paint33();
  	  	}
   aktcv = evt.getComponent();
   String aktKarte = evt.getComponent().getName();
   System.out.println(aktKarte);
   vergleichen(aktKarte,aktcv);
   }
    });
  cv[14].addMouseListener(new MouseAdapter(){
  public void mousePressed(MouseEvent evt){
  	if(State0){
  	  	paint14();
  	  	}else{
  	  		paint34();
  	  	}
   aktcv = evt.getComponent();
   String aktKarte = evt.getComponent().getName();
   System.out.println(aktKarte);
   vergleichen(aktKarte,aktcv);
   }
    });
  cv[15].addMouseListener(new MouseAdapter(){
  public void mousePressed(MouseEvent evt){
  	if(State0){
  	  	paint15();
  	  	}else{
  	  		paint35();
  	  	}
   aktcv = evt.getComponent();
   String aktKarte = evt.getComponent().getName();
   System.out.println(aktKarte);
   vergleichen(aktKarte,aktcv);
   }
    });
  cv[16].addMouseListener(new MouseAdapter(){
  public void mousePressed(MouseEvent evt){
  	if(State0){
  	  	paint16();
  	  	}else{
  	  		paint36();
  	  	}
   aktcv = evt.getComponent();
   String aktKarte = evt.getComponent().getName();
   System.out.println(aktKarte);
   vergleichen(aktKarte,aktcv);
   }
    });
  cv[17].addMouseListener(new MouseAdapter(){
  public void mousePressed(MouseEvent evt){
  	if(State0){
  	  	paint17();
  	  	}else{
  	  		paint37();
  	  	}
   aktcv = evt.getComponent();
   String aktKarte = evt.getComponent().getName();
   System.out.println(aktKarte);
   vergleichen(aktKarte,aktcv);
   }
    });
  cv[18].addMouseListener(new MouseAdapter(){
  public void mousePressed(MouseEvent evt){
  	if(State0){
  	  	paint18();
  	  	}else{
  	  		paint38();
  	  	}
   aktcv = evt.getComponent();
   String aktKarte = evt.getComponent().getName();
   System.out.println(aktKarte);
   vergleichen(aktKarte,aktcv);
   }
    });
  cv[19].addMouseListener(new MouseAdapter(){
  public void mousePressed(MouseEvent evt){
  	if(State0){
  	  	paint19();
  	  	}else{
  	  		paint39();
  	  	}
   aktcv = evt.getComponent();
   String aktKarte = evt.getComponent().getName();
   System.out.println(aktKarte);
   vergleichen(aktKarte,aktcv);
   }
    });
  bt.addActionListener(new ActionListener(){
   public void actionPerformed (ActionEvent e){
   	bilderLadenautohintergründe();
   	bilderLadenautopanelhint();
    panelhintergrund();
    for(int i=0;i<20;i++){
    	cv[i].setVisible(true);
     	painthintergrundilder(i);
 	 }
   	anzahlderspielerundnamen();  
    } 	      	
  });
 bt.addMouseListener(new MouseAdapter(){
  public void mouseEntered(MouseEvent evt){
   handcursor();
  }
  });
  bt.addMouseListener(new MouseAdapter(){
  public void mouseExited(MouseEvent evt){
   defaultcursor();
  }
  });
  addWindowListener(new WindowAdapter(){
  public void windowClosing(WindowEvent e){
   System.exit(0);
  }
 });
}
 public void paint0()
 {
  Graphics g;
  g=cv[0].getGraphics();
  img[0] = getToolkit().getImage("0.jpg"); 
  g.drawImage(img[0],0,0,this);
 }
 public void paint1()
 {
  Graphics g;
  g=cv[1].getGraphics();
  img[1] = getToolkit().getImage("1.jpg"); 
  g.drawImage(img[1],0,0,this);
 }
 public void paint2()
 {
  Graphics g;
  g=cv[2].getGraphics();
  img[2] = getToolkit().getImage("2.jpg"); 
  g.drawImage(img[2],0,0,this);
 }
 public void paint3()
 {
  Graphics g;
  g=cv[3].getGraphics();
  img[3] = getToolkit().getImage("3.jpg"); 
  g.drawImage(img[3],0,0,this);
 }
 public void paint4()
 {
  Graphics g;
  g=cv[4].getGraphics();
  img[4] = getToolkit().getImage("4.jpg"); 
  g.drawImage(img[4],0,0,this);
 }
 public void paint5()
 {
  Graphics g;
  g=cv[5].getGraphics();
  img[5] = getToolkit().getImage("5.jpg"); 
  g.drawImage(img[5],0,0,this);
 }
 public void paint6()
 {
  Graphics g;
  g=cv[6].getGraphics();
  img[6] = getToolkit().getImage("6.jpg"); 
  g.drawImage(img[6],0,0,this);
 }
 public void paint7()
 {
  Graphics g;
  g=cv[7].getGraphics();
  img[7] = getToolkit().getImage("7.jpg"); 
  g.drawImage(img[7],0,0,this);
 }
 public void paint8()
 {
  Graphics g;
  g=cv[8].getGraphics();
  img[8] = getToolkit().getImage("8.jpg"); 
  g.drawImage(img[8],0,0,this);
 }
 public void paint9()
 {
  Graphics g;
  g=cv[9].getGraphics();
  img[9] = getToolkit().getImage("9.jpg"); 
  g.drawImage(img[9],0,0,this);
 }
 public void paint10()
 {
  Graphics g;
  g=cv[10].getGraphics();
  img[10] = getToolkit().getImage("0.jpg"); 
  g.drawImage(img[10],0,0,this);
 }
 public void paint11()
 {  Graphics g;
  g=cv[11].getGraphics();
  img[11] = getToolkit().getImage("1.jpg"); 
  g.drawImage(img[11],0,0,this);
 }
 public void paint12()
 {
  Graphics g;
  g=cv[12].getGraphics();
  img[12] = getToolkit().getImage("2.jpg"); 
  g.drawImage(img[12],0,0,this);
 }
 public void paint13()
 {
  Graphics g;
  g=cv[13].getGraphics();
  img[13] = getToolkit().getImage("3.jpg"); 
  g.drawImage(img[13],0,0,this);
 }
 public void paint14()
 {
  Graphics g;
  g=cv[14].getGraphics();
  img[14] = getToolkit().getImage("4.jpg"); 
  g.drawImage(img[14],0,0,this);
 }
 public void paint15()
 {
  Graphics g;
  g=cv[15].getGraphics();
  img[15] = getToolkit().getImage("5.jpg"); 
  g.drawImage(img[15],0,0,this);
 }
 public void paint16()
 {
  Graphics g;
  g=cv[16].getGraphics();
  img[16] = getToolkit().getImage("6.jpg"); 
  g.drawImage(img[16],0,0,this);
 }
 public void paint17()
 {
  Graphics g;
  g=cv[17].getGraphics();
  img[17] = getToolkit().getImage("7.jpg"); 
  g.drawImage(img[17],0,0,this);
 }
 public void paint18()
 {
  Graphics g;
  g=cv[18].getGraphics();
  img[18] = getToolkit().getImage("8.jpg"); 
  g.drawImage(img[18],0,0,this);
 }
 public void paint19()
 {
  Graphics g;
  g=cv[19].getGraphics();
  img[19] = getToolkit().getImage("9.jpg"); 
  g.drawImage(img[19],0,0,this);
 }
 public void paint20()
 {
  Graphics g;
  g=cv[0].getGraphics();
  img[0] = getToolkit().getImage("10.jpg"); 
  g.drawImage(img[0],0,0,this);
 }
 public void paint21()
 {
  Graphics g;
  g=cv[1].getGraphics();
  img[1] = getToolkit().getImage("11.jpg"); 
  g.drawImage(img[1],0,0,this);
 }
 public void paint22()
 {
  Graphics g;
  g=cv[2].getGraphics();
  img[2] = getToolkit().getImage("12.jpg"); 
  g.drawImage(img[2],0,0,this);
 }
 public void paint23()
 {
  Graphics g;
  g=cv[3].getGraphics();
  img[3] = getToolkit().getImage("13.jpg"); 
  g.drawImage(img[3],0,0,this);
 }
 public void paint24()
 {
  Graphics g;
  g=cv[4].getGraphics();
  img[4] = getToolkit().getImage("14.jpg"); 
  g.drawImage(img[4],0,0,this);
 }
 public void paint25()
 {
  Graphics g;
  g=cv[5].getGraphics();
  img[5] = getToolkit().getImage("15.jpg"); 
  g.drawImage(img[5],0,0,this);
 }
 public void paint26()
 {
  Graphics g;
  g=cv[6].getGraphics();
  img[6] = getToolkit().getImage("16.jpg"); 
  g.drawImage(img[6],0,0,this);
 }
 public void paint27()
 {
  Graphics g;
  g=cv[7].getGraphics();
  img[7] = getToolkit().getImage("17.jpg"); 
  g.drawImage(img[7],0,0,this);
 }
 public void paint28()
 {
  Graphics g;
  g=cv[8].getGraphics();
  img[8] = getToolkit().getImage("18.jpg"); 
  g.drawImage(img[8],0,0,this);
 }
 public void paint29()
 {
  Graphics g;
  g=cv[9].getGraphics();
  img[9] = getToolkit().getImage("19.jpg"); 
  g.drawImage(img[9],0,0,this);
 }
 public void paint30()
 {
  Graphics g;
  g=cv[10].getGraphics();
  img[10] = getToolkit().getImage("10.jpg"); 
  g.drawImage(img[10],0,0,this);
 }
 public void paint31()
 {  Graphics g;
  g=cv[11].getGraphics();
  img[11] = getToolkit().getImage("11.jpg"); 
  g.drawImage(img[11],0,0,this);
 }
 public void paint32()
 {
  Graphics g;
  g=cv[12].getGraphics();
  img[12] = getToolkit().getImage("12.jpg"); 
  g.drawImage(img[12],0,0,this);
 }
 public void paint33()
 {
  Graphics g;
  g=cv[13].getGraphics();
  img[13] = getToolkit().getImage("13.jpg"); 
  g.drawImage(img[13],0,0,this);
 }
 public void paint34()
 {
  Graphics g;
  g=cv[14].getGraphics();
  img[14] = getToolkit().getImage("14.jpg"); 
  g.drawImage(img[14],0,0,this);
 }
 public void paint35()
 {
  Graphics g;
  g=cv[15].getGraphics();
  img[15] = getToolkit().getImage("15.jpg"); 
  g.drawImage(img[15],0,0,this);
 }
 public void paint36()
 {
  Graphics g;
  g=cv[16].getGraphics();
  img[16] = getToolkit().getImage("16.jpg"); 
  g.drawImage(img[16],0,0,this);
 }
 public void paint37()
 {
  Graphics g;
  g=cv[17].getGraphics();
  img[17] = getToolkit().getImage("17.jpg"); 
  g.drawImage(img[17],0,0,this);
 }
 public void paint38()
 {
  Graphics g;
  g=cv[18].getGraphics();
  img[18] = getToolkit().getImage("18.jpg"); 
  g.drawImage(img[18],0,0,this);
 }
 public void paint39()
 {
  Graphics g;
  g=cv[19].getGraphics();
  img[19] = getToolkit().getImage("19.jpg"); 
  g.drawImage(img[19],0,0,this);
 }

 public void painthintergrundilder(int i){
  Graphics g;
  g=cv[i].getGraphics();
  img[i] = getToolkit().getImage("back.jpg"); 
  g.drawImage(img[i],0,0,this);
 }
 public void paintgeduld(){
	Graphics g;
	  g=cvf.getGraphics();
	  imgf = getToolkit().getImage("geduld.gif"); 
	  g.drawImage(imgf,0,0,this);
 }
 public void panelhintergrund()
 {
  Graphics g;
  g=p.getGraphics();
  img[40] = getToolkit().getImage("panelhintergrund.jpg"); 
  g.drawImage(img[40],0,0,this);
 }
 public int ywert(int y){
 return (int) (y);
}
public int xwert(int x){
 return (int) (x);
}
public static double würfeln(){
 
 double x;
 x=Math.round(6*Math.random()+0.5);
 return x;
}
public void mischeln(){

	int e=(int) würfeln();
	if(e==1){
		p.add(cv[0]);
		p.add(cv[3]);
		p.add(cv[6]);
		p.add(cv[1]);
		p.add(cv[5]);
		p.add(cv[7]);
		p.add(cv[4]);
		p.add(cv[2]);
		p.add(cv[8]);
		p.add(cv[9]);
		p.add(cv[15]);
		p.add(cv[10]);
		p.add(cv[14]);
		p.add(cv[18]);
		p.add(cv[19]);
		p.add(cv[11]);
		p.add(cv[12]);
		p.add(cv[13]);
		p.add(cv[17]);
		p.add(cv[16]);
	}
	if(e==2){
		p.add(cv[17]);
		p.add(cv[19]);
		p.add(cv[18]);
		p.add(cv[13]);
		p.add(cv[11]);
		p.add(cv[1]);
		p.add(cv[12]);
		p.add(cv[10]);
		p.add(cv[3]);
		p.add(cv[14]);
		p.add(cv[7]);
		p.add(cv[5]);
		p.add(cv[6]);
		p.add(cv[16]);
		p.add(cv[4]);
		p.add(cv[2]);
		p.add(cv[15]);
		p.add(cv[8]);
		p.add(cv[9]);
		p.add(cv[0]);
	}
}
public void vergleichen(String aktKarte, Component aktcv){
	if(ersterKlick){
		  ersterKlick=false;
		  Karte0 = aktKarte;
		  a[0]=Karte0;
		  Comp0=aktcv;
		  comp[0]=Comp0;
		 }else{		
		  ersterKlick=true;
		  Karte1 = aktKarte;
		  a[1]=Karte1;
		  Comp1=aktcv;
		  comp[1]=Comp1;
		  if(a[0]==a[1]){
		  	try {
	          	  Thread.sleep( 2000 );
	          	
	          	} catch ( InterruptedException h ){}
	
		         comp[0].setVisible(false);
		         comp[1].setVisible(false);
		         panelhintergrund();

		  }
		  else{
		  	
		  	try {
	          	  Thread.sleep( 2000 ) ;
	          	} catch ( InterruptedException h ) { }
	          	
	          	for(int i=0;i<20;i++){
		  	painthintergrundilder(i);
	          	}
		  	Spieler1=false;
		  	Spieler2=true;
		  }

		 }
}
private void titel()
   {
     setTitle("Memory");
   }
private void handcursor()
  {
     setCursor(new Cursor(Cursor.HAND_CURSOR));
  }
private void defaultcursor()
{
   setCursor(new Cursor(Cursor.DEFAULT_CURSOR));
}
public void setIcon(){
	 Image icon = getToolkit().getImage("icon-login.gif");
	     MediaTracker mt = new MediaTracker(this);
	
	   mt.addImage(icon, 0);
	    try {
      mt.waitForAll();
	   } catch (InterruptedException e) {
 
    }
    setIconImage(icon);

}
public void setIcon2(){
	 Image icon2 = getToolkit().getImage("icon-podcast.png");
	     MediaTracker mt = new MediaTracker(this);
	
	   mt.addImage(icon2, 0);
	    try {
     mt.waitForAll();
	   } catch (InterruptedException e) {

   }
   fenster.setIconImage(icon2);

}
public void setCars(boolean State0)
  {
	miCars.setState(true);
   miAnimals.setState(false);
  }
   
public void setAnimals(boolean State1){
	
		miAnimals.setState(true);
		miCars.setState(false);
}
public void moment(){
	Graphics g;
 	fenster.setLocation(250,300);
 	fenster.setSize(500,120);
 	fenster.setVisible(true);
 	setIcon2();
 	fenster.setTitle("Bitte haben Sie einen Moment Geduld - Die Bilder werden geladen");
	  	g=fenster.getGraphics();
		 g.fillRect(0,60,20,20);
		 g.fillRect(50,60,20,20);
		 g.fillRect(100,60,20,20);
		 g.fillRect(150,60,20,20);
		 g.fillRect(200,60,20,20);
		 g.fillRect(250,60,20,20);
		 g.fillRect(300,60,20,20);
		 g.fillRect(350,60,20,20);
		 g.fillRect(400,60,20,20);
		 g.fillRect(450,60,20,20);
		 g.fillRect(500,60,20,20);
		 bilderLaden();
	for(int k=0;k<500;k=k+50){
		 g.fillRect(0,60,20,20);
		 g.fillRect(50,60,20,20);
		 g.fillRect(100,60,20,20);
		 g.fillRect(150,60,20,20);
		 g.fillRect(200,60,20,20);
		 g.fillRect(250,60,20,20);
		 g.fillRect(300,60,20,20);
		 g.fillRect(350,60,20,20);
		 g.fillRect(400,60,20,20);
		 g.fillRect(450,60,20,20);
		 g.fillRect(500,60,20,20);
		 
 	   g.fillRect(k,50,40,40);
       g.setColor(Color.black);
       try {
    	  Thread.sleep( 100 );
    	} catch ( InterruptedException q ) { }
    	g.clearRect(k,50,40,40);
 	  }
 	  fenster.setVisible(false);
 	    for(int i=0;i<20;i++){
 	     	painthintergrundilder(i);
 	 	 }
}

public void anzahlderspielerundnamen(){
	
	  bt2=new JButton("Eingabe bestätigen");
	  fensterfirst.setLocation(250,300);
	  fensterfirst.setSize(500,120);
	  fensterfirst.setLayout(new BorderLayout());
	  Panel pfirst=new Panel();
	  pfirst.setSize(500,50);
	  pfirst.setLayout(new FlowLayout());
	  pfirst.add(new Checkbox("1 Spieler",cb,true));
	  pfirst.add(new Checkbox("2 Spieler",cb,false));
	  fensterfirst.add(new Label("                                            Bitte wählen Sie die Anzahl der Spieler aus"),BorderLayout.NORTH);
	  fensterfirst.add(pfirst,BorderLayout.SOUTH);
	  pfirst.setVisible(true);
	  fensterfirst.add(bt2,BorderLayout.CENTER);
	  fensterfirst.setVisible(true);

	   bt2.addActionListener(new ActionListener(){
	    public void actionPerformed (ActionEvent e){
	    	  switch (cb.getSelectedCheckbox().getLabel().charAt(0)){
	    	  case'1':
	    	  	fensterfirst.setVisible(false);
	    	  	fenstername.setSize(500,120);
	    	    fenstername.setLocation(250,300);
	    	  	fenstername.setLayout(new BorderLayout(10,20));
	    	  	bt4=new JButton("Name Bestätigen");
	    	  	Panel pt=new Panel();
	    	  	pt.setSize(500,10);
	    	  	pt.setLayout(new BorderLayout(0,10));
	    		pt.add(new Label("                                                   Bitte tragen Sie hier Ihren Namen ein!"),BorderLayout.NORTH);
	    	  	final TextField tf=new TextField();
	    	  	 fenstername.add(bt4,BorderLayout.SOUTH);
	    	  	pt.add(tf,BorderLayout.CENTER);
	    	  	tf.setVisible(true);
	    	  	fenstername.add(pt,BorderLayout.NORTH);
	    	  	fenstername.setVisible(true);
	    		bt4.addActionListener(new ActionListener(){
	 			   public void actionPerformed (ActionEvent e){
	 			   	Spieler1zu1=tf.getText(); 	
	 			   System.out.println(Spieler1zu1);
	 			   	fenstername.setVisible(false);
	 			   	moment();
	 			   }
	 			});
	    	  	
	    	  	break;
	    	  case'2':
	    	  	Panel pz=new Panel();
	    	  	pz.setSize(500,10);
	    	  	pz.setLayout(new BorderLayout());
	    	  	Panel pf=new Panel();
	    	  	pf.setSize(500,10);
	    	  	pf.setLayout(new BorderLayout());
	    	  	fensterfirst.setVisible(false);
	    	  	fenstername.setSize(500,150);
	    	    fenstername.setLocation(250,300);
	    	  	fenstername.setLayout(new BorderLayout());
	    	  	pz.add(new Label("                                         Spieler1, bitte tragen Sie hier Ihren Namen ein!"),BorderLayout.NORTH);
	    	  	final TextField tf2=new TextField("                         ");
	    	  	pz.add(tf2);
	    	  	pf.add(new Label("                                         Spieler2, bitte tragen Sie hier Ihren Namen ein!"),BorderLayout.NORTH);
	    	  	final TextField tf3=new TextField("                          ");
	    	  	pf.add(tf3,BorderLayout.CENTER);
	    	  	pz.add(tf2,BorderLayout.CENTER);
	    	    bt3=new JButton("Namen Bestätigen");
	    	    bt3.setVisible(true);
	    	    fenstername.add(bt3,BorderLayout.CENTER);
	    	  	fenstername.add(pz,BorderLayout.NORTH);
	    	  	fenstername.add(pf,BorderLayout.SOUTH);
	    		fenstername.setVisible(true);
	    		bt3.addActionListener(new ActionListener(){
	    			   public void actionPerformed (ActionEvent e){
	    			   	Spieler1zu1=tf2.getText();
	    			   	Spieler2zu2=tf3.getText();	
	    			   	System.out.println(Spieler1zu1);
	    			   	System.out.println(Spieler2zu2);
	    			 	fenstername.setVisible(false);
	    			 	moment();
	    			   }
	    			});
	    	  }
	    	}
	    });
	 
	
}
public void bilderLadenautohintergründe(){
	 MediaTracker mt=new MediaTracker(this);
	 mt.addImage(getToolkit().getImage("back.jpg"),0);
	 mt.addImage(img[43],0);
	 try{
	  mt.waitForAll();
	 }
	 catch(InterruptedException e){}
}
public void bilderLadenautopanelhint(){
	 MediaTracker mt=new MediaTracker(this);
	 mt.addImage(getToolkit().getImage("panelhintergrund.jpg"),0);
	 mt.addImage(img[42],0);
	 try{
	  mt.waitForAll();
	 }
	 catch(InterruptedException e){}
}
public void bilderLaden(){
	 MediaTracker mt=new MediaTracker(this);
	 mt.addImage(getToolkit().getImage("panelhintergrund.jpg"),0);
	 mt.addImage(getToolkit().getImage("back.jpg"),0);
	 mt.addImage(img[41],0);
	 for (int i=0;i<20;i++){
	  img[i]=getToolkit().getImage(i+".jpg");
	  mt.addImage(img[i],0);
	 }
	 try{
	  mt.waitForAll();
	 }
	 catch(InterruptedException e){}
}
 public static void main(String[] args) throws MalformedURLException {

  memory d=new memory();
  d.setSize(999999,999999);
  d.show();
 }

/* (non-Javadoc)
 * @see java.awt.event.MouseListener#mouseClicked(java.awt.event.MouseEvent)
 */
public void mouseClicked(MouseEvent arg0) {
	// TODO Auto-generated method stub
	
}

/* (non-Javadoc)
 * @see java.awt.event.MouseListener#mouseEntered(java.awt.event.MouseEvent)
 */
public void mouseEntered(MouseEvent arg0) {
	// TODO Auto-generated method stub
	
}

/* (non-Javadoc)
 * @see java.awt.event.MouseListener#mouseExited(java.awt.event.MouseEvent)
 */
public void mouseExited(MouseEvent arg0) {
	// TODO Auto-generated method stub
	
}

/* (non-Javadoc)
 * @see java.awt.event.MouseListener#mousePressed(java.awt.event.MouseEvent)
 */
public void mousePressed(MouseEvent arg0) {
	// TODO Auto-generated method stub
	
}

/* (non-Javadoc)
 * @see java.awt.event.MouseListener#mouseReleased(java.awt.event.MouseEvent)
 */
public void mouseReleased(MouseEvent arg0) {
	// TODO Auto-generated method stub
	
}
}
```


----------



## Leroy42 (6. Jul 2006)

*Hilfe!!!*  :shock: 

Gib's zu: Du bist ein MS$/Intel-Agent, der auf die Welt losgelassen
wurde, um den Bedarf an Speicher weiter in die Höhe zu treiben.  :noe: 

Aber Häme beiseite; dein Programm um 85% zu kürzen, werden wir
hier vielleicht irgendwann später mal in Angriff nehmen   

Zu deiner Frage: 
Versuch doch mal ein Mini-Beispiel aus deinem Programm zu extrahieren,
daß die Funktionalität repräsentiert (Canvas über Hintergrundbild entfernen/disablen),
andem wir (und vielleicht auch du vorher) den Fehler leichter orten können.


----------



## lin (6. Jul 2006)

eine einzige Klasse für ein Memory mit über 1000 Zeilen, *Hilfe2*.
Ich glaub du solltest dich nochmal bisserl intensiver mit OOP und Klassendesign beschäftigen.


----------



## Guest (6. Jul 2006)

Mhm Ja also ich mache das für die Schule, und wir sollen halt jeder ein Spiel programmieren aber mit mehreren Klassen dass haben wir noch nie gemacht.


----------



## Guest (6. Jul 2006)

Also mein Problem taucht öfter auf aber ich versuchs mal anhand der methode "vergleichen" zu erläutern.


```
public void vergleichen(String aktKarte, Component aktcv){
   if(ersterKlick){
        ersterKlick=false;
        Karte0 = aktKarte;
        a[0]=Karte0;
        Comp0=aktcv;
        comp[0]=Comp0;
       }else{      
        ersterKlick=true;
        Karte1 = aktKarte;
        a[1]=Karte1;
        Comp1=aktcv;
        comp[1]=Comp1;
        if(a[0]==a[1]){
           try {
                  Thread.sleep( 2000 );
                
                } catch ( InterruptedException h ){}
   
               comp[0].setVisible(false);
               comp[1].setVisible(false);
               panelhintergrund();

        }
        else{
           
           try {
                  Thread.sleep( 2000 ) ;
                } catch ( InterruptedException h ) { }
                
                for(int i=0;i<20;i++){
           painthintergrundilder(i);
                }
           Spieler1=false;
           Spieler2=true;
        }

       }
}
```


Also wenn jetzt 2 gleiche Bilder angeklickt wurden. Setze ich die beiden ankeglickten Canvas auf false. Aber anstatt dass diese jetzt wie gedacht verschwinden sehe ich dort wo sich die Canvas befanden nur 2 weiße Rechtecke.
Und das obwohl ich mir danach meinen panelhintergrund neu zeichne.


```
comp[0].setVisible(false);
               comp[1].setVisible(false);
               panelhintergrund();
```


----------



## DEvent (6. Jul 2006)

Also ein Spiel, in dem sich nur wenig per Frame ändert, funktioniert normalerweise so:

1. Lösche Alles (mit Hintergrundfarbe)
2. Zeichne alle sichtbaren Objecte
3. Frage Benutzereingabe ab
4. Objekte reagieren auf Benutzereingabe durch Statusänderung
    wenn ein Status eines Objects verändert wurde, dann gehe zu 1.

Wenn sich viel ändert dann ist es sinnvoller eine "Endlosschleife" zu machen.

mache solange Spiel aktiv
{ 
   1. Lösche Alles (mit Hintergrundfarbe)  
   2. Zeichne alle sichtbaren Objecte
   3. Frage Benutzereingabe ab
   4. Objekte reagieren auf Benutzereingabe durch Statusänderung
}

Mit dieser Techniken dürften keine Grafikfehler entstehen.

Am besten mit Double-Buffer:

mache solange Spiel aktiv
{ 
    1. Lösche Background-Buffer
    2. Zeichne alle sichtbaren Objecte auf Background-Buffer

    3. Frage Benutzereingabe ab
    4. Objekte reagieren auf Benutzereingabe durch Statusänderung

    5. Zeichne Background-Buffer auf den Forderground
}

Der Background-Buffer ist dabei ein Image-Object mit der Größe des Fensters auf dem du zeichnest.


----------

