Lektion 3c – Aufgabe & Challenge: Schleifen und Zeit
Da du die vorigen Aufgaben erfolgreich gelöst hast, kannst du die folgenden Aufgaben mit dem selben Programm bearbeiten: Lektion 2c – Challenge: Wir bringen Kollisionen ins Spiel! Du brauchst kein neues Programm zu erstellen!
Nach der Theorie möchten wir nun die Schleife in ein Programm einbauen und uns somit Arbeit ersparen. Du kannst du dafür auch diese beiden Videos ansehen oder du folgst der Schritt für Schritt Anleitung darunter:
Aufgabe 1:
Erinnern wir uns an unseren Zähler aus dem vorigen Blatt. Wir möchten das Programm nun derart umschreiben, dass wir per Tastendruck 7 Mal die Variable erhöhen.
Beispiel: 1 Klick = 7, 2 Klicks = 14, 4 Klicks = 28…
A. Zunächst brauchen wir die aus dem vorigen Blatt bekannten Elemente wie einen Button mit der Aufschrift „Erhöhe den Punktestand um 7!“ und ein Label Zahl. Danach ziehen wir in der Blocks-Ansicht den Block „when Button1.Click do“ in den Viewer.
B. Jetzt ziehen wir aus Built-in folgenden Schleife-Block in den Viewer. Hier finden wir unseren Anfangswert, Endwert und die Schrittweite. Da wir 7-Mal wiederholen möchten, müssen wir unseren Endwert in 7 ändern. Die Schrittweite belassen wir bei 1.
C. Wir sind fast am Ziel! Nun basteln wir uns die untere Kombination zusammen. Dies dürfte dir nicht schwer fallen, da du dies auch im vorigen Blatt bereits getan hattest. Diese setzen wir in unsere Schleife ein und erhalten folgendes:
Fertig! Du kannst nun gerne diese Schleife ausprobieren und schauen, ob sie bei bspw. 3,4 oder 5 Klicks die Zahlen 21, 28 oder 35 anzeigt!
Aufgabe 2
Wenn wir uns vor Augen führen, dass wir ein Spiel programmieren möchten, dann brauchen wir in den meisten Spielen eine Uhr – besser gesagt einen Countdown. Dies ist auch in App Inventor 2 einfach zu programmieren! Ich zeige dir wie:
A. Wähle aus User Interface das Element Label aus, benenne seinen Text in 30 um. Als Nächstes wählst du aus Sensors das Element Clock aus und ziehst es ebenfalls in den Viewer.
B. Gehe nun in den Blocks-Modus und ziehe aus Clock1 den Block und lege ihn im Viewer ab. Ziehe nun aus Built-in den Block „initialize global [name] to“ und lege ihn ebenfalls im Viewer ab. Ziehe aus Maths den Block „0“ und befestige ihn am Ende von „initialize global [name] to“. Benenne ihn in 30 um.
C. Ziehe als Nächstes aus Variables den Block „set global timer to“ und lege ihn im Viewer ab. Mithilfe des Blocks „get global timer“ und einigen Blöcken aus Maths legst du dir nun folgendes zurecht
D. Als Letztes müssen wir nur noch die aktuelle Zeit an das Label weitergeben, damit diese stets sichtbar ist. Sonst wüssten wir nicht, wie viel Zeit wir noch haben!
Mithilfe des letzten Blocks wird unserem Label immer die aktuelle Zeit zugewiesen.
E. Aber eins haben wir noch vergessen! Wie ihr aus der obigen Lektion noch wisst, brauchen wir unbedingt eine Abbruchbedingung, da unsere Schleife sonst immer weiter laufen würde. Konkret würde das in unserem Fall heißen, dass die Uhr bei 0 nicht aufhören würde. Diese Bedingung bauen wir mit ein und erhalten
.
F. Die leere Stelle füllen wir mit unserer Bedingung. Diese lautet, dass die Zeit immer größer 0 sein muss. Dafür bedienen wir uns Blöcken aus Maths.
Fertig! Starte nun deine App und vergewissere dich, dass auch alles stimmt!
Challenge: Learning By Doing
Experimentiere nun herum und baue einen Mechanismus, der dafür sorgt, dass der Spieler bei Berühren eines Objekts weitere drei Sekunden Bonus erhält! Viel Erfolg!
Schreibe uns dein Lösungsvorschlag ins Kommentarfeld.
Du bist fertig mit der Challenge und möchtest deine Programm mit der Lösung abgleichen? Dann hinterlasse uns doch ein Kommentar 🙂