Hi @ all,
hab folgendes Problem.
Ich hab eine Aufgabe gefunden, bei der ich ein Schachbrett programmieren soll und die Züge eines Springers. Ich muss auf dem Brett (2D-Array) alle Züge abbilden.
Ich geb als Startwert die Stelle des Springers auf dem Schachbrett an
Z.B.: 3 / 5 (also die Koordinaten)
Die Ausgabe soll für dieses Beispiel dann so aussehen:
2 3 4 1 2 1 4 3
3 2 1 2 3 2 1 2
2 3 2 3 0 3 2 3
3 2 1 2 3 2 1 2
2 3 4 1 2 1 4 3
3 2 3 2 3 2 3 2
4 3 2 3 2 3 2 3
3 4 3 4 3 4 3 4
Bei 0 befindet sich momentan der Springer. Die Felder mit 1 zeigen an, auf welche Felder ich mit einem Zug hinkomme, Felder mit 2 mit zwei Zügen usw...
Mein code sieht soweit so aus:
Den Rumpf der Methode Spirnger muss ich irgendwie in eine Schleife packen, da diese 8 Anweisungen nur für ein Startwert gelten. Nur ich komm nicht drauf.
Ausgabe wäre dann:
0 0 0 0 0 0 0 0
0 0 1 0 1 0 0 0
0 1 0 0 0 1 0 0
0 0 0 3 0 0 0 0
0 1 0 0 0 1 0 0
0 0 1 0 1 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
Ausgabemethode:
Und Main:
12*12 deshalb ja, da ich es ja auch sein kann, dass der Spirger auserhalb des 8*8 Feldes liegen kann. Nur wird das nicht ausgegeben (s. ausgabe()).
Vielen Dank im Voraus.
hab folgendes Problem.
Ich hab eine Aufgabe gefunden, bei der ich ein Schachbrett programmieren soll und die Züge eines Springers. Ich muss auf dem Brett (2D-Array) alle Züge abbilden.
Ich geb als Startwert die Stelle des Springers auf dem Schachbrett an
Z.B.: 3 / 5 (also die Koordinaten)
Die Ausgabe soll für dieses Beispiel dann so aussehen:
2 3 4 1 2 1 4 3
3 2 1 2 3 2 1 2
2 3 2 3 0 3 2 3
3 2 1 2 3 2 1 2
2 3 4 1 2 1 4 3
3 2 3 2 3 2 3 2
4 3 2 3 2 3 2 3
3 4 3 4 3 4 3 4
Bei 0 befindet sich momentan der Springer. Die Felder mit 1 zeigen an, auf welche Felder ich mit einem Zug hinkomme, Felder mit 2 mit zwei Zügen usw...
Mein code sieht soweit so aus:
Java:
public class Matrix {
//private int x,y;
private int a,b;
private int springer[][];
public Matrix(int z, int s)
{
springer = new int[z][s];
a = z;
b = s;
}
public void springer(int x,int y)
{ y += 1;
x += 1;
springer[x][y]=3; //anstatt 3 eig. 0, aber lässt sich sonst nicht differenzieren
springer[x+1][y+2]=1;
springer[x+1][y-2]=1;
springer[x-2][y+1]=1;
springer[x-2][y-1]=1;
springer[x+2][y-1]=1;
springer[x+2][y+1]=1;
springer[x-1][y+2]=1;
springer[x-1][y-2]=1;
}
Ausgabe wäre dann:
0 0 0 0 0 0 0 0
0 0 1 0 1 0 0 0
0 1 0 0 0 1 0 0
0 0 0 3 0 0 0 0
0 1 0 0 0 1 0 0
0 0 1 0 1 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
Ausgabemethode:
Java:
public void ausgeben()
{
for(int i=2; i<a-2;i++)
{ System.out.println();
for(int j=2; j<b-2;j++)
{
System.out.print(springer[i][j]+" ");
}
}
}
Java:
public class Main {
public static void main(String[] args) {
Matrix m1 = new Matrix(12,12);
m1.springer(3,5);
m1.ausgeben();
}
}
12*12 deshalb ja, da ich es ja auch sein kann, dass der Spirger auserhalb des 8*8 Feldes liegen kann. Nur wird das nicht ausgegeben (s. ausgabe()).
Vielen Dank im Voraus.