Erkundung
Alle Lücken füllen
Die Missionszentrale meldet sich:
Nachdem wir jetzt schon die Löcher am Anfang und Ende des Asteroidenkorridors füllen konnten, gehen wir noch einen Schritt weiter: Wir möchten, dass alle Löcher im Korridor mit einem PowerUp verschlossen werden, egal, wo sie sich befinden. Natürlich soll das Programm wieder für jeden beliebigen Korridor funktionieren.
Aufgabe 1: Vorarbeit skizzieren
Bevor wir das Problem vollständig lösen, betrachten wir ein kleineres Problem: Die Argo soll das PowerUp statt in die Lücke einfach direkt auf den Korridor legen.
Vervollständige dafür die folgenden Überlegungen. Dafür kannst du verwenden, dass die Argo nicht nur einen Sensor für die Asteroiden vor ihr hat, sondern auch die Asteroiden links und rechts von sich erspüren kann (oder natürlich die Abwesenheit von diesen).
SOLANGE kein Asteroid vor dir: Sektor weiterfliegen WENN kein ... : ... WENN kein ... ...
Aufgabe 2: Vorarbeit in Python
Übersetze diese Überlegungen nun in ein Python-Programm für die Argo. Die neuen Sensoren benutzt du durch rockLeft() und rockRight().
Aufgabe 3: Das Hauptproblem lösen
Um das Hauptproblem zu lösen, musst du nun noch die Anweisungssequenz ergänzen, durch die die Argo in die Lücken fliegt. Tipp: Das hast du schon im letzten Kapitel gelöst! Teste dein Problem für alle verfügbaren Szenarien.
Aufgabe 4: Engstellen markieren
Eine neue Nachricht der Missionszentrale:
Einige Raumschiffe hatten zuletzt Probleme, durch Engstellen in einem Atsreoidenkorridor zu fliegen, also Stellen, an denen sowohl ein Asteroid rechts und links des Raumschiffes ist. Wenn die Argo diese Stellen mit einem PowerUp markieren könnte, würde die Navigation leichter fallen.
Die Argo kann prüfen, ob zwei ihrer Sensoren zeitgleich ausschlagen, indem du den and-Operator verwendest:
if rockRight() and rockLeft():