Buch Cover Buch Cover Buch Cover Buch Cover

Web-Code: - Webcode Help

Neko im Labyrinth [Java] (Datentypen, Variablen und Ausdrücke)

Neko im Labyrinth

Neko sucht den Ausgang des Labyrinths. Helfen Sie ihm dabei, den Weg sicher zu finden.

Öffnen Sie Ihre Java-Entwicklungsumgebung und importieren Sie die Datei Labyrinth.jar (in BlueJ: "Projekt ? Fremdprojekt öffnen..."). Im Paket aufgabe finden Sie die Datei NekoRennt.java, innerhalb der Sie die Lösung programmieren sollen.

Werfen Sie aber zuvor einen Blick auf die Online-Dokumentation der Klasse Labyrinth. Sie finden diese via die Datei index.html im Unterordner doc des Projektordners, der beim Öffnen von Labyrinth.jar erzeugt wurde. Unter BLueJ können Sie auch einfach den Menupunkt "Werkzeuge ? Dokumentation erzeugen" auswählen (Achtung: danach die Dokumentation keinesfalls neu erzeugen, sondern nur lesen!).

Die Klasse Labyrinth stellt Ihnen diverse Funktionen zur Verfügung, mit denen Sie Neko den Weg durch das Labyrinth weisen können. Suchen Sie nach einer Lösung

  1. ohne Verwendung der Methoden absDirectionIsFree(int dir) und nekoMoveAbs(int direction)
  2. ohne Verwendung der Methoden nekoForward(), nekoTurnLeft(), nekoTurnRight() und relDirectionIsFree(int dir).

Dateien:

0 Kommentare

Bitte melde dich an um einen Kommentar abzugeben

1 Lösung(en)

//Teil 1:
package aufgabe;

import labyrinth.Labyrinth;
import labyrinth.Loesung;

class NekoRenntLoesungRel implements Loesung {
  static private final int breite = 1000, hoehe = 900, anzSpalten = 20;
  Labyrinth l = new Labyrinth(breite, hoehe, anzSpalten, this);
  
  public NekoRenntLoesungRel() {
    l.run();
  }
  
  public void rennen() {
    while(!(l.isExit() || l.isError() || l.isStopped())) {
       // wenn es keine rechte Wand gibt
       if(l.relDirectionIsFree(0)) {
         // um 90 Grad nach rechts drehen und dann vorwaerts laufen
         l.nekoTurnRight();
         l.nekoForward();
       } else {
         // solange Neko nicht vorwaerts laufen kann
         while(!l.relDirectionIsFree(1))
           // um 90 Grad nach links drehen
           l.nekoTurnLeft();
         // und dann vorwaerts laufen
         l.nekoForward();
       }
    }
  }
  
  public static void main(String[] args) {
    new NekoRenntLoesungRel();
  }
}

// Teil 2:
package aufgabe;

import labyrinth.Labyrinth;
import labyrinth.Loesung;

class NekoRenntLoesungAbs implements Loesung {
  static private final int breite = 1000, hoehe = 900, anzSpalten = 20;
  Labyrinth l = new Labyrinth(breite, hoehe, anzSpalten, this);
  int orientation = 0;
  
  public NekoRenntLoesungAbs() {
    l.run();
  }
  
  public void rennen() {
    while(!(l.isExit() || l.isError() || l.isStopped())) {
      // wenn es keine rechte Wand gibt
       if(l.absDirectionIsFree((orientation + 3) % 4)) {
         // um 90 Grad nach rechts drehen und dann vorwaerts laufen
         orientation = (orientation + 3) % 4;
         l.nekoMoveAbs(orientation);
       } else {
         // solange Neko nicht vorwaerts laufen kann
         while(!l.absDirectionIsFree(orientation))
           // um 90 Grad nach links drehen
           orientation = (orientation + 1) % 4;           
         // und dann vorwaerts laufen
         l.nekoMoveAbs(orientation);
       }
    }
    if(l.isExit() || l.isError())
      orientation = 0;
  }
  

  
  public static void main(String[] args) {
    new NekoRenntLoesungAbs();
  }
}
                

Verifikation/Checksumme:

Wenn Neko nicht so laufen kann, wie es das Programm verlangt, oder wenn sie im Kreis läuft, bleibt sie sitzen und miaut. Es wird dann eine Fehlermeldung angezeigt.

Wenn Neko das Ziel erreicht hat, brüllt sie wie ein Löwe.

Aktionen

Bewertung

Durchschnittliche Bewertung:

Eigene Bewertung:
Bitte zuerst anmelden

Meta

Zeit: 2
Schwierigkeit: k.A.
Webcode: zf6t-g2nw
Autor: Michael Weiss ()

Download PDF

Download ZIP

Zu Aufgabenblatt hinzufügen