Einstieg - Simulation eines Roboters
Er ist dann mal weg!
Bisher ist es möglich, dass der Roboter die Grenzen seiner Welt verlässt. Er muss sich nach der Erzeugung nur nach rechts drehen und einige Schritte vorwärts laufen und schon ist er weg.

Aufgabe 1
Der folgende Quelltext zeigt einen Auszug aus der Deklaration der Klasse Roboter
. Ändere die Methode schritt
mit weiteren Fallunterscheidungen so ab, dass der Roboter seine (8x8)-Welt
nicht mehr verlassen kann.
Variable Weltgröße
Die Welt des Roboters soll flexibel einstellbar sein. Es soll also möglich sein, die Anzahl der Felder sowohl in x- wie auch in y-Richtung in beliebiger (sinnvoller) Weise vorzugeben.


Hierzu muss das Objektmodell zur Roboterwelt erweitert werden. Zwei Vorschläge stehen zur Diskussion:
Vorschlag 1:

Vorschlag 2:

Aufgabe 2
(a) Warum ist Vorschlag 2 im Sinne der Modularisierung wohl günstiger?
(b) Der folgende Quelltext zeigt die Implementierung einer Klasse Welt
.
Wie erzeugt man mit dieser Klasse geeignete Objekte zur Modellierung der beiden oben in Bildern gezeigten Roboterwelten?
Weltgrenzen abtesten - erster Versuch
Wir ändern jetzt die Methode schritt
der Klasse Roboter
wie folgt ab:
Mit einem Testprogramm sollen die Veränderungen überprüft werden. Beachte, dass die Datei roboterwelt.py
die aktuellen Versionen der Klassen Roboter
und Welt
enthält und im selben Verzeichnis liegt wie das Testprogramm test.py
.
Bei der Ausführung des Testprogramms erhält man folgende Fehlermeldung:
Aufgabe 3
Hast du eine Erklärung für die Fehlermeldung?
Ein Zeiger auf das Weltobjekt
Wir verbessern jetzt Vorschlag 2, indem wird das Roboter
-Objekt mit einem Zeiger auf das Welt
-Objekt versehen.
bisher - Vorschlag 2:

neu - Vorschlag 3:

Um eine solche Objektkonstellation erzeugen zu können, wird die Klasse Roboter
wie folgt erweitert:
Aufgabe 4
Führe das folge Testprogramm aus. Erkläre, was die einzelnen Anweisungen bewirken.
Weltgrenzen abtesten - zweiter Versuch
Wir ändern jetzt in der erweiterten Klasse Roboter
die Methode schritt
wie folgt ab:
Jetzt sollte das folgende Testprogramm funktionieren:
Aufgabe 5
Probiere es aus. Führe auch noch weitere Tests aus.