# Schach



## RayNeih (17. Jun 2012)

Ich programmiere gerade ein "Schachspiel" in Java
und bin jetzt an einem Punkt angekommen, an dem ich die Konsolenausgabe in einen JFrame umändern möchte.

Ich habe ein 2 Dimensionales Feld Buttons angelegt, die ich mit der Grundaufstellung der Schachfiguren im Konstruktor meiner Klasse Schach belegt habe.

Die Ausgabe von Zügen und Schlägen funktioniert in dem JFrame wunderbar, jetzt würde ich gerne die Züge und Schläge per Mausclick realisieren.

Da hatte ich mir ein Copy-Paste System überlegt. 


```
if(x==0)
{
//Spielfigur von dem Spielfeld in Zwischenspeicher;
x=1;
}
else if(x==1)
{
//Spielfigur vom Zwischenspeicher ins Spielfeld;
}
```

Nun hänge ich an dem Problem fest, dass es Wochen dauern würde jeden dieser 64 Button einzeln mit einer Actionperform Anweisung zu belegen und hänge dort gerade fest.

Details:
Spielfigur ist vom Typ IFigur und benötigt beim erstellen als Attribut(x, y, "key") (liegt in einer HashMap)
// key z.B: Sw für Springer schwarz

Spielfeld 
Die Buttons belege ich zurzeit mit den "Labels" indem ich das bestehende 2 Dimensionale Feld der Konsolenausgabe abfrage.

Funktionen für Schachfiguren sind z.B:


```
public void SpringerZug(int x, int y, IFigur ifigur, int newx, int newy)
public void BauerSchlaegt(int x, int y, IFigur iFigur, int newx, int newy)
public void BauerZug(int x, int y,IFigur iFigur,int newx )

public void setFigur(IFigur figur,int x, int y)
public IFigur getFigur(String key)
```


Ich bedank mich schon mal wenn ihr so weit gelesen habt ;P


r


----------



## RayNeih (17. Jun 2012)

Hatte überlegt, das so zu realisieren, allerdings werden dann "zufällige" Figuren "zufällig" versetzt.



```
public void action()
	{
		
		
		
		for(int u=0;u<8;u++)
		{
			for(int i=0;i<8;i++){
				   final int speicher1=i;
				   final int speicher2=u;
				   
				   button[u][i].addActionListener(new ActionListener(){
				      public void actionPerformed(ActionEvent e){
			if(x==0)
			{
				
			 zwisch = new Figur(button[speicher1][speicher2].getLabel());
			figuren.put(button[speicher1][speicher2].getLabel(), zwisch);
			button[speicher1][speicher2].setLabel("");
			x=1;
			}
			else if(x==1)
			{
				x=0;
				button[speicher1][speicher2].setLabel(zwisch.getName());
			}
			
			}});
	
	
			}
		}

	
	}
```


----------



## RayNeih (23. Jun 2012)

Erledigt, Lösung folgt


----------



## RayNeih (23. Jun 2012)

```
public void action()
	{



		for(int u=0;u<8;u++)
		{
			for(int i=0;i<8;i++){
				final int speicher1=u;
				final int speicher2=i;

				button[u][i].addActionListener(new ActionListener(){


					@SuppressWarnings("deprecation")
					public void actionPerformed(ActionEvent e){
						if(x==0)
						{

							Zwischen = new Figur(button[speicher1][speicher2].getLabel());


							figuren.put(button[speicher1][speicher2].getLabel(), Zwischen);

							bx = speicher1;
							by = speicher2;
							x=1;
							nus.setLabel(" " + x  + " ");
						}
						else if(x==1)
						{ 

							x=0;
							nus.setLabel(" " + x  + " ");
							if(Zwischen.getName().equals(figuren.get("ss").getName()) | Zwischen.getName().equals(figuren.get("sw").getName()))
							{
								System.out.println("lala");
								if(SpringerZug(bx, by, getFigur(Zwischen.getName()), speicher1, speicher2)==true)
								{
									System.out.println(Zwischen.getName());
									button[speicher1][speicher2].setLabel(Zwischen.getName());
									button[bx][by].setLabel("");
								}
							}
							else if(Zwischen.getName().equals(figuren.get("bs").getName()) | Zwischen.getName().equals(figuren.get("bw").getName()))
							{
								if(speicher2 != by)
								{
									if(Zwischen.getName().equals(figuren.get("bs").getName()) | Zwischen.getName().equals(figuren.get("bw").getName()))
									{
										if(BauerSchlaegt(bx, by, getFigur(Zwischen.getName()), speicher1, speicher2)==true)
										{

											System.out.println(Zwischen.getName());
											button[speicher1][speicher2].setLabel(Zwischen.getName());
											button[bx][by].setLabel("");
										}
									}
								}
								else
								{
									if(BauerZug(bx, by, getFigur(Zwischen.getName()), speicher1)==true)
									{


										System.out.println(Zwischen.getName());
										button[speicher1][speicher2].setLabel(Zwischen.getName());
										button[bx][by].setLabel("");
									}
								}
							}
							else if(Zwischen.getName().equals(figuren.get("ts").getName()) | Zwischen.getName().equals(figuren.get("tw").getName()))
							{
								if(TurmZieht(bx, by, getFigur(Zwischen.getName()),           speicher1, speicher2)== true)
								{
									System.out.println(Zwischen.getName());
									button[speicher1]   
                                                                        [speicher2].setLabel(Zwischen.getName());
									button[bx][by].setLabel("");
								}
							}
						}

					}});


			}
		}
		

	}
```

Mit globaler Variable x, by, bx und dem button


----------



## daybyter (24. Jun 2012)

Paar Sources muss ein Schach-UI müsste ich auch noch haben. Wenn Du mal Hilfe brauchst, sag Bescheid...


----------

