SPIELBESCHREIBUNG |
Auf dem 5x5 LED-Display des Calliope bewegt sich ein Pixel auf einer zufälligen Spalte von oben nach unten, analog einem Ei, das von einem Tisch hinunter fällt.
|
TEILAUFGABE 1: FALLENDES EIPIXEL |
Als erstes schreibst du ein Programm, dass bei jedem Aufruf der Funktion moveEgg() das Eipixel auf der fixen Spalte x = 2 um eine Zeile nach unten bewegt. Du gehst von folgendem Programmgerüst aus, und fügt die fehlenden Anweisungen ein: from calliope_mini import * def move(): global y, yOld # erase old ... # draw new ... # update position yOld = y y = y + 1 if y == 5: y = 0 # Initialization x = 2 y = 0 yOld = 4 # Animation loop while True: move() sleep(300) # animation speed |
TEILAUFGABE 2: AUF ZUFÄLLIGER LINIE FALLENDES EIPIXEL |
Als nächstes erweiterst du das Programm so, dass die Falllinie zufällig gewählt wird. Verwende den Aufruf random(a, b) aus dem Modul random, der eine Zufallszahl zwischen a und b (a und b eingeschlossen) liefert Führe dazu analog zu yOld auch ein xOld ein. |
TEILAUFGABE 3: VERSCHIEBBARES KORBPIXEL |
Schreibe im gleichen Stil die Funktion moveBasket(), welche das Korbpixel auf der untersten Zeile links oder rechts verschiebt, wenn du den linken, bzw. rechten Button drückst. Das Hauptprogramm besteht aus: # Initialization z = 0 # Animation loop while True: moveBasket() sleep(300) # animation speed wo z die aktuelle x-Koordinate das Korbpixels ist. |
TEILAUFGABE 4: ZUSAMMENFÜGEN VON EI UND KORB |
Füge nun die Codeteile so zusammen, so dass sich sowohl das Eipixel wie der Korbpixel (allerdings noch unabhängig voneinander) bewegen. Das Hauptprogramm enthält die Schleife: while True: moveEgg() mobeBasket() sleep(300) # animation speed Du kannst jetzt bereits etwas spielen, indem du versuchst, mit dem Korb am richtigen Ort das Ei zu fangen. |
TEILAUFGABE 5: HERAUSFINDEN, OB DER KORB DAS EI FÄNGT |
Das Programm soll nun von sich aus herausfinden, ob das Eipixel und das Korbpixel am gleichen Ort zusammentreffen (kollidieren). In diesem Fall erhöhst du die Spielpunktzahl um eins. Den Kollisionstest fügst du am bestem im Hauptprogramm ein, wobei du beachten musst, dass die Position des aktuell angezeigten Eipixels mit xOld, yOld beschrieben wird (x, y ist die Position des nächsten Pixels). Bei einem Hit zeigst du das Bild Image.YES (ein Gutzeichen), bei Misserfolg zeigst du Image.NO (ein Kreuz). if yOld == 4: # egg at bottom sleep(1000) if xOld == z: # hit display.show(Image.YES, clear = True) else: # miss display.show(Image.NO, clear = True) |
SPIEL FERTIGSTELLEN UND PERSONALISIEREN |
Das Schwierigste ist hinter dir. Du muss jetzt nur noch eine Zählvariable hits einfügen, die um eins erhöht wird, falls Ei und Korb zusammentreffen und dann noch dafür sorgen, dass das Spiel genau 10 mal wiederholt wird. Nachher zeigst du auf dem Display die Zahl der Hits an und beendest das Programm. Du kannst es ja durch Klicken des Reset-Buttons beliebig oft starten. Selbstverständlich ist es nun deiner Fantasie überlassen, dem Spiel durch einige Varianten und Verbesserungen einen persönlichen Touch zu geben. Viel Spass!
|