Benutzer-Werkzeuge

Webseiten-Werkzeuge


info10:aufgaben:roboter

Roboter

In dieser Aufgabe soll eine einfache Simulation programmiert werden, in der sich mehrere „Roboter“ über ein zweidimensionales Spielfeld mit positiven ganzzahligen Koordinaten bewegen können:

  • Es sollen Roboter-Objekte (Klasse Robo) erzeugt und auf dem Spielfeld (Klasse
 GameBoard) plaziert werden können.
  • Ein Roboter-Objekt registriert sich bei Erzeugung bei einem Objekt der Klasse
 RoboSim, die für die Durchführung der Simulation zuständig ist.
  • Roboter besitzen eine eindeutige Kennzeichnung (Id) in Form eines char-Wertes und wissen selbst, auf welcher Position (Klasse RoboPos) im Spielfeld sie sich befinden.
  • Das Spielfeld koordiniert die Positionen aller Roboter und kann eine Textdarstellung des aktuellen Szenarios liefern. In dieser Darstellung werden Roboter durch ihre Id markiert.
  • Auf einer Spielfeldposition kann sich immer nur ein Roboter befinden. Roboter können sich nicht diagonal bewegen und dürfen das Spielfeld nicht verlassen.
  • Robotern kann man Befehle zum Ändern ihrer Position geben; sie können sich entweder um ein oder mehrere Felder in eine Himmelsrichtung bewegen oder an eine absolute Koordinate wandern.
  • Statt einen Bewegungsbefehl direkt auszuführen, merken sich die Roboter zunächst, welche Aktionen sie in welcher Reihenfolge durchführen müssen.
  • Die Klasse RoboSim besitzt eine Methode run, die die Simulation durchführt: in einem Schritt werden alle registrierten Roboter nacheinander in ihrer Registrierungsreihenfolge aufgefordert, sich ein Feld entsprechend ihrer Aktionsliste weiter zu bewegen. Anschließend wird die aktuelle Spielfeldbelegung angezeigt.
  • Die Simulation (Methode run) endet, falls in einem Schritt sich kein Roboter bewegt hat.

Schreiben Sie eine Klasse RoboTest, die eine Simulation mit mehreren Robotern und verschiedenen Bewegungen durchführt und auch das korrekte Verhalten in Sonderfällen demonstriert.

Eine Simulation könnte z.B. so aussehen:

// Erzeuge eine Simulation mit einem 20x10 Spielfeld
RoboSim sim = new RoboSim (20, 10);
// Erzeuge, registriere und positioniere 3 Roboter
Robo robbyA = new Robo ('a', sim, new RoboPos (5, 5));
Robo robbyB = new Robo ('b', sim, new RoboPos (1, 1));
Robo robbyC = new Robo ('c', sim, new RoboPos (20, 10));
// 'Programmiere' die Roboter
robbyA.goEast(5);
robbyB.goTo(new RoboPos (3,3));
robbyC.goNorth();
// Starte Simulation
sim.run();
Ausgabe 
Startposition           1. Schritt               2. Schritt 
b...................   ....................   ....................
....................   b...................   .b..................
....................   ....................   ....................
....................   ....................   ....................
....a...............   .....a..............   ......a.............
....................   ....................   ....................
....................   ....................   ....................
....................   ....................   ....................
....................   ...................c   ...................c
...................c   ....................   ....................
info10/aufgaben/roboter.txt · Zuletzt geändert: 2023/01/16 09:03 von Ulrich Schneider