Backtracking Labyrinth Java?

Guten Abend,

ich habe die Aufgabe, ein Backtracking Labyrinth in Java zu schreiben. Ich habe jedoch keine Ahnung, wie ich es, aufbauend auf dem Code meines Lehrers, machen kann.

Der Code:

public class Labyrinth {
  char[][] irrgarten;

  final int breite = 20;

  final int hoehe = 20;

  int mausX, mausY;

  public Labyrinth() {
    irrgarten = new char[breite][hoehe];

    for (int x = 0; x < breite; x++)
      for (int y = 0; y < hoehe; y++)
        irrgarten[x][y] = ' ';

    erstelleMauern();
    mausX = 2;
    mausY = 2;
    anzeigen();
  }

  public void erstelleMauern() {
    for (int x = 0; x < breite; x++) {
      irrgarten[x][0] = '#';
      irrgarten[x][hoehe - 1] = '#';
    }

    for (int y = 0; y < hoehe; y++) {
      irrgarten[0][y] = '#';
      irrgarten[breite - 1][y] = '#';
    }

    for (int x = 0; x < 10; x++) {
      irrgarten[x][6] = '#';
      irrgarten[x][12] = '#';
      irrgarten[x + 6][8] = '#';
      irrgarten[x + 6][14] = '#';
    }

    for (int y = 0; y < 5; y++) {
      irrgarten[4][y] = '#';
      irrgarten[15][y] = '#';
      irrgarten[4][y + 6] = '#';
      irrgarten[15][y + 8] = '#';
    }

    for (int y = 2; y < 6; y++)
      irrgarten[9][y] = '#';

    for (int y = 4; y < 8; y++)
      irrgarten[12][y] = '#';

    irrgarten[2][7] = 'K';
  }

  private void anzeigenXAchse() {
    System.out.print("\t");

    for (int x = 0; x < breite - 1; x++)
      if (x % 5 == 0)
        System.out.print("|");
      else
        System.out.print(".");

    System.out.println();
  }

  public void anzeigen() {
    System.out.println();
    anzeigenXAchse();

    for (int y = 0; y < hoehe; y++) {
      System.out.print(y + "\t");

      for (int x = 0; x < breite; x++)
        if ((x == mausX) && (y == mausY))
          System.out.print("o");
        else
          System.out.print(irrgarten[x][y] + "");

      System.out.println();
    }

    anzeigenXAchse();
  }

  public void versuch(int x, int y) {
    System.out.println("Maus an Position ("+x+","+y+")");

    if (irrgarten[x][y] == 'K') return;

    if (irrgarten[x][y] == ' ') {
      if (x + 1 < breite)
        versuch(x + 1, y);

      if (y + 1 < hoehe)
        versuch(x, y + 1);

      if (x - 1 >= 0)
        versuch(x - 1, y);

      if (y - 1 >= 0)
        versuch(x, y - 1);
    }
  }
}

K ist der Käse, o ist die Maus.

Für Fragen stehe ich offen und für Hilfe wäre ich sehr dankbar.

MfG

Deckenguy

Computer, Schule, Java, Algorithmus, labyrinth
1 Antwort

Meistgelesene Fragen zum Thema Computer