Argo, der Staubsauger
![](https://schuljahr.inf-schule.de/aktuell/content/100_entwuerfe/114_tba/11_unterprogramme-spacebug/1_loesungsversuch/problemstellung.png)
Aufgabe 1: Aufräumen
![](https://schuljahr.inf-schule.de/aktuell/content/100_entwuerfe/114_tba/11_unterprogramme-spacebug/1_loesungsversuch/weltenwechsler.png)
(a) Ergänze die Lösung unten so, dass in Welt 1 alle Powerups aufgesammelt werden.
(b) Klicke auf Welt 2 (siehe rechts) und starte das Programm. Es erscheint eine Fehlermeldung: Kollision mit einem Asteroiden! Prüfe Zeile 7. Suche den Fehler im Programm und korrigiere ihn.
💡 Tipp für Teil (b)
Aktiviere den Debug-Modus.
Untersuche, welche Zeilen ausgeführt werden, wenn die Argo auf dem letzten Powerup der ersten Stufe steht.
💡 Noch keine Idee?
3 if onPow():
4 removePow()
5 move()
6 if not onPow():
7 move()
![](https://schuljahr.inf-schule.de/aktuell/content/100_entwuerfe/114_tba/11_unterprogramme-spacebug/1_loesungsversuch/fehler_vorher.png)
![](https://schuljahr.inf-schule.de/aktuell/content/100_entwuerfe/114_tba/11_unterprogramme-spacebug/1_loesungsversuch/fehler_schritt_1.png)
![](https://schuljahr.inf-schule.de/aktuell/content/100_entwuerfe/114_tba/11_unterprogramme-spacebug/1_loesungsversuch/fehler_schritt_2.png)
Die Argo läuft in Zeile 7 gegen die Wand, weil sie sich zweimal bewegt: Beide bedingten Anweisungen werden ausgeführt (Z. 3 und Z. 6).
Nutze zum Beispiel eine Fallunterscheidung, um das zu ändern.
💡 Immer noch keine Idee?
Zur Erinnerung:
Eine Fallunterscheidung ist ein Konstrukt der Form if
/else
.
Ändere den Code wie im Flussdiagramm dargestellt: