Schach-SpringerProblem

sup?

Mitglied
Hi Leute,
ich schreib gerade ein Programm zum Springer-Problem.
Ich hab also einen Springer, der alle Felder auf einem Schachbrett abfahrn soll, ohne dabei ein Feld doppelt zu benutzen.

Das ist soweit mal das Brett:

Java:
public class Feld {
	
	private int x;
	private int y;
	private int status;

	public Feld(int x, int y){
		this.x = x;
		this.y = y;
		this.status = -1;
	}

	public int getStatus() {
		return status;
	}

	public void setStatus(int status) {
		this.status = status;
	}

	public int getX() {
		return x;
	}

	public int getY() {
		return y;
	}
	
	
}

Java:
public class Brett {

	private int length;
	private int numberOfFields;
	private ArrayList<Feld> myBoard = new ArrayList<Feld>();

	public Brett(int length) {
		this.length = length;
		this.numberOfFields = length ^ 2;
		createBoard();
	}

	public int getLength() {
		return length;
	}

	public int getNumberOfFields() {
		return numberOfFields;
	}

	public ArrayList<Feld> createBoard() {
		for (int y = 0; y < length; y++) {
			for (int x = 0; x < length; x++) {
				Feld field = new Feld(x, y);
				myBoard.add(field);
			}
		}
		return myBoard;
	}
	public void printBoard(){
		for(Feld element  : myBoard ){
			System.out.print(element);
		}
	}
}

Java:
public class Main {
	public static void main(String[]args){
		
	
	Brett board = new Brett(3);
	System.out.println(board.getLength());
	board.printBoard();
	}
}

Passt das so von meinem Gedankengang?
Wie kann ich das Schachbrett in der Konsole ausdrucken?
 

Zeeu

Aktives Mitglied
Wie genau soll die ausgabe des Feldes denn aussehen ?

den Informationen zu folge denke ich du müsstest einfach die liste durchgehen,
und von jedem Element (Feld Objekt) die x,y und status werte ausgeben.
Meinst du das ?

Java:
public void printBoard(){
        for(Feld element  : myBoard ){
            System.out.print(element);
        }
    }
gibt bisher komisches zeug aus denke ich ? ^^
Da du keine eigene toString() Methode hast, wird die toString der Klasse Object aufgerufen, die nicht das gewünschte ergebnis liefert.

schreib dir für die Klasse Feld eine Methode printFeld()

Java:
public void printBoard(){
        for(Feld element  : myBoard ){
            System.out.print(element.printFeld());
        }
    }
 
Zuletzt bearbeitet:

Crian

Top Contributor
Wie kann ich das Schachbrett in der Konsole ausdrucken?

Ich hab für ein ähnliches Problem (Damenproblem) die Ausgabe so realisiert, vielleicht kannst du das ähnlich machen?

Java:
    public void print() {
        for (int col = 0; col < numberOfFields; ++col)
            System.out.print("+---");
        System.out.println("+");

        for (int row = 0; row < numberOfFields; ++row) {
            System.out.print("|");
            for (int col = 0; col < numberOfFields; ++col) {
                if (isQueenAt(col, row))
                    System.out.print(" Q ");
                else
                    System.out.print("   ");
                System.out.print("|");
            }
            System.out.println("");

            for (int col=0; col< numberOfFields; ++col)
                System.out.print("+---");
            System.out.println("+");
        }
    }

So sieht dann eine Ausgabe beispielsweise aus. Du kannst es gern hübscher machen.

Code:
+---+---+---+---+---+---+---+---+
| Q |   |   |   |   |   |   |   |
+---+---+---+---+---+---+---+---+
|   |   |   |   | Q |   |   |   |
+---+---+---+---+---+---+---+---+
|   |   |   |   |   |   |   | Q |
+---+---+---+---+---+---+---+---+
|   |   |   |   |   | Q |   |   |
+---+---+---+---+---+---+---+---+
|   |   | Q |   |   |   |   |   |
+---+---+---+---+---+---+---+---+
|   |   |   |   |   |   | Q |   |
+---+---+---+---+---+---+---+---+
|   | Q |   |   |   |   |   |   |
+---+---+---+---+---+---+---+---+
|   |   |   | Q |   |   |   |   |
+---+---+---+---+---+---+---+---+
 

thorstenthor

Bekanntes Mitglied
Also nicht nur sagen, dieser und jener Code ist mein Programm. Das ist nichtssagend, wenn man sich nicht viel Zeit nimmt, alles anzusehen.

Ist das Schachbrett durch ein Array realisiert? Ein zweidimensionales? Welchen Typs? Hast du schon einen Ansatz für den (rekursiven) Lösungs-Algorithmus? Probiere das gleich auch mal aus, interessiert mich, die Zugfolge..
 

Neue Themen


Oben