Inhalt aus anderen Klassen verwenden

Syrghar

Mitglied
Schöne Weihnachten an alle!

Sitze gerade an einer Sache, wo ich die aktuelle Position und mögliche Positionen einer Figur auf einem Brett ausgeben möchte (Schach).
Es gibt eine Klasse Figur und davon abgeleitet z.B. die KLasse Springer und nun soll das ganze ausgegeben werden.

Java:
public class Springer extends Figur
{
	/**
	 * Konstruktor
	 */
	public Springer(String startpos)
	{
		super(startpos, 'S');
	}

	
	public String ermittleZiele()
	{
		String zuege = "";
		zuege += position(spalte + 2, reihe + 1);
		zuege += position(spalte + 1, reihe + 2);
		zuege += position(spalte + 2, reihe - 1);
		zuege += position(spalte + 1, reihe - 2);
		zuege += position(spalte - 2, reihe + 1);
		zuege += position(spalte - 1, reihe + 2);
		zuege += position(spalte - 2, reihe - 1);
		zuege += position(spalte - 1, reihe - 2);
		return (zuege.substring(0, zuege.length() - 1));
	}
}

In meiner Klasse Figur habe ich die Methode showBoard.
Java:
public void showBoard()
	{
		System.out.println();
		int i = 8;
		
		//zeichnen des Schachbretts
		for(int v_zeichneReihe = 7; v_zeichneReihe >= 0; v_zeichneReihe--)
		{
			System.out.printf("%d", i);
			i--;
			
			for(int v_zeichneSpalte = 0; v_zeichneSpalte <= 7; v_zeichneSpalte++)
			{
				if(spalte == v_zeichneSpalte && reihe == v_zeichneReihe)
				{
					System.out.printf("+");
				}else
				{
					System.out.printf("-");
				}
				
			}
			System.out.println();	
		}
		System.out.println(" abcdefgh");
		System.out.println();
	}

Das Zeichnen des Bretts funktioniert, auch kann ich mir an der Posititon der Figur ein anderes Zeichen (hier +) anzeigen lassen. Woran es aber scheitert ist folgendes.

1. Möchte ich mir nicht das '+' sondern, im Fall des Springers, das 'S' aus der Springer Klasse anzeigen lassen bzw. eben 'D' für die Dame.
2. Sollen die möglichen Positionen der Figur ebenfalls anders dargestellt und angezeigt werden. Die Position werden wie oben zu sehen auch in der Springer Klasse bestimmt.

Aktuelle Ausgabe:
--- Springer ---

g6;f7;g4;f3;c6;d7;c4;d3

8--------
7--------
6--------
5----+---
4--------
3--------
2--------
1--------
abcdefgh

Kann ich dieses 'S' bzw. die Positionen aus der Springer KLasse überhaupt ansprechen? Danke schonmal.

Mfg. Syrghar
 
Habe den Punkt 1 nun dadurch lösen können indem ich mir in der Klasse Figur eine Variable vom Typ CHAR gemacht habe und dort dann den Wert vom Parameter figur reinschreibe.
Dann habe ich die showBoard Methode so erweitert, dass ich dann auf diese Variable abfrage und das richtige Zeichen ausdrucke.

Showboard neu:
Java:
public void showBoard()
	{
		// TODO (Hausübung)
		
		System.out.println();
		int i = 8; //für Darstellung der Reihen - Werte 1-8
		
		//zeichnen des Schachbretts
		for(int v_zeichneReihe = 7; v_zeichneReihe >= 0; v_zeichneReihe--)
		{
			System.out.printf("%d", i);
			i--;
			
			for(int v_zeichneSpalte = 0; v_zeichneSpalte <= 7; v_zeichneSpalte++)
			{
				//prüfen ob Position zu zeichnender Position entspricht
				if(spalte == v_zeichneSpalte && reihe == v_zeichneReihe)
				{
					//Unterscheidung welche Figur zu zeichnen ist
					if(v_zeichneFigur == 'S')
					{
						System.out.printf("S");
					}else if(v_zeichneFigur == 'D')
						{
							System.out.printf("D");
						}else
							{
								System.out.printf("L");
							}
				}
				
				
				else
				{
					//für alle anderen Position Bindestrich als Zeichen verwenden
					System.out.printf("-");
				}
				
				
				
			}
			System.out.println();	
		}
		System.out.println(" abcdefgh");
		System.out.println();
	}

Für die Positionen hakt es leider noch.🙁
 

Zurück
Oben