Ich hab’ Landeis mal geringfügig verändert und angepasst (hoffentlich durfte ich das, Landei):
{{1, 0}, {-1, 0}, {0, 1}, {0, -1}, {1, 1}, {1, -1}, {-1, 1}, {-1, -1}};
public static boolean inside(int x, int y) {
return 0 <= x && x < 8 && 0 <= y && y < 8;
}
public static void printMoves(int x, int y) {
LinkedList<int[]> lldirs = new LinkedList<int[]>(Arrays.asList(dir));
for (int d = 1; !lldirs.isEmpty() /* or d < 8 */; d++) {
for (Iterator<int[]> idirs = lldirs.iterator(); idirs.hasNext();) {
int[] dir = idirs.next(); // Local variable hides a field
int x2 = x + dir[0] * d;
int y2 = y + dir[1] * d;
if (inside(x2, y2)) {
System.out.println("Dame kann auf (" + x2 + "," + y2 + ") ziehen");
} else {
idirs.remove();
}
}
System.out.println("");
}
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
printMoves(3, 1);```
Und die Ausgabe:
Dame kann auf (4,1) ziehen
Dame kann auf (2,1) ziehen
Dame kann auf (3,2) ziehen
Dame kann auf (3,0) ziehen
Dame kann auf (4,2) ziehen
Dame kann auf (4,0) ziehen
Dame kann auf (2,2) ziehen
Dame kann auf (2,0) ziehen
Dame kann auf (5,1) ziehen
Dame kann auf (1,1) ziehen
Dame kann auf (3,3) ziehen
Dame kann auf (5,3) ziehen
Dame kann auf (1,3) ziehen
Dame kann auf (6,1) ziehen
Dame kann auf (0,1) ziehen
Dame kann auf (3,4) ziehen
Dame kann auf (6,4) ziehen
Dame kann auf (0,4) ziehen
Dame kann auf (7,1) ziehen
Dame kann auf (3,5) ziehen
Dame kann auf (7,5) ziehen
Dame kann auf (3,6) ziehen
Dame kann auf (3,7) ziehen
Wenn Dame auf (0,0) ziehen können soll, dann muss sie auf a..., ...8 oder auf der Hauptdiagonalen starten.
Vorteilig wird das (nur), wenn es anstatt 8 Felder z.B. 8000000 gibt.