Übungen
Aufgabe 1 - PowerUps aufräumen
Die Besatzung der Argo soll die auf dem Weg verstreuten PowerUps vor einem Asteroiden einsammeln
und danach geordnet ablegen.
Schreibe ein passendes Python-Programm, das Unterprogramme einsammeln()
und ablegen(anzahl)
verwendet. Die Funktion einsammeln()
soll dabei alle
PowerUps entfernen und deren Anzahl als Funktionswert zurückgeben.
Expertenfrage
Könnte man das Hauptprogramm auch einfach so schreiben?
ablegen(einsammeln())
Aufgabe 2 - Was passiert hier?
Im folgenden Fenster siehst du eine Ausgangssituation und mehrere Varianten eines Programms (durch Klick auf die kleinen Kreise unter dem Weltfenster)
Vergleiche die 4 Programmvarianten, indem du jeweils die folgenden 3 Aufgaben bearbeitest:
- Analysiere den Quelltext und stelle Vermutungen auf, was bei der Ausführung passieren wird.
- Führe das Programm mit unterschiedlichen Eingabewerten aus und überprüfe dabei deine Vermutungen.
- Führe das Programm im Debug-Modus aus und beobachte dabei den Zustand der Variablen.
Aufgabe 3 - Hier wird es knapp!
Die Argo fliegt häufiger an Asteroidenschwärmen vorbei. Das ist manchmal ganz schön knapp mit dem Abstand! Unten siehst du das Grundgerüst eines Programms, mit dem die Argo an Stellen, die nah an einem Asteroiden sind, PowerUps zur Warnung legt. Das ist der Fall, wenn der Abstand zum Asteroiden höchstens 2 ist. Vervollständige das Python-Programm.
Es sind mehrere Welten zum Testen hinterlegt.Profiaufgabe
Die Argo soll jetzt nur an der engsten Stelle ein PowerUp legen, egal wie weit die Distanz ist. Falls mehrere Stellen gleich eng sind, dann soll es die erste dieser Stellen markieren.
Aufgabe 4 - Schon wieder aufräumen!
Die Argo befindet sich zwischen zwei Kammern. Der Befehl der Einsatzzentrale lautet: Bitte in einer Kammer die PowerUps entfernen!
Die Besatzung möchte natürlich so wenig aufräumen wie möglich. Daher plant sie, zunächst durch beide Räume zu fliegen, und dann den Raum zu säubern, in dem weniger PowerUps sind. Die Kammergröße ist dabei immer gleich, nur die PowerUps können variieren. Es sind wieder mehrere Beispiele hinterlegt.
Schreibe ein Python-Programm zur Lösung des Problems. Dein Programm soll dabei eine Funktion verwenden, die die Anzahl der PowerUps in einer Kammer ermittelt und zurückgibt!
Profiaufgabe
Gib deiner Funktion, die die PowerUps in einer Kammer zählt, noch einen Parameter mit, der angibt, ob die PowerUps auch gelöscht werden sollen. Dann kannst du die Funktion nicht nur zum Zählen, sondern auch zum Reinigen der Kammer verwenden.
Aufgabe 5 - Neue Sensoren für Argo
Die Argo kann abfragen, ob sich ein Asteroid links oder rechts von ihr befindet
(rockRight()
bzw. rockLeft()
).
Die Einsatzzentrale hätte auch gerne solche Abfragen für PowerUps. Im Quelltext unten sieht du dafür eine Lösung für
powRight()
. Dabei muss die Argo auf das Feld rechts neben sich gehen, sich dort merken, ob da ein PowerUp liegt
und dann, nach dem zurückgehen, diesen Wert als Funktionsergebnis zurückliefern. Beachte dabei, dass als Variablenwerte
nur die beiden Zustände wahr (True) und Falsch
(False) möglich sind. Es handelt sich daher um eine
sogenannte Bool'sche Variable.
Im Hauptprogramm wird dann der Funktionsaufruf von powRight()
als Abbruchbedingung
in der while-Schleife verwendet.
Teste das vorhandene Python-Programm und erweitere es anschließend, damit auch eine Funktion
powLeft()
zur Verfügung steht. Mit Hilfe dieser Funktion soll die Argo die abgebildete Aufgabe lösen
und bis zum ersten PowerUp links fliegen.
Profiaufgabe
Denke dir noch andere Abfrage aus, die die Argo gut gebrauchen kann. Baue dir dann eine passende Welt, in der du deine neue Abfrage gut verwenden kannst.