Calliope mini - Spaß durch Programmieren

Entwicklungsumgebungen

Ich packe meinen Koffer... (mit Zahlen)

Ziel: Der Calliope mini zeigt nach dem ersten Drücken der Taste B für eine Sekunde eine zufällige Zahl zwischen 0 und 3 an. Danach muss der Nutzer durch Berühren der Pins 0 bis 3 diese Zahl eingeben. War es die richtige Zahl, zeigt der Calliope mini nach dem Drücken der Taste B hintereinander zwei zufällige Zahlen an, die der Nutzer wieder durch Berühren der Pins in der richtigen Reihenfolge bestätigen muss. Die Anzahl der gezeigten Zahlen wird solange erhöht, bis der Nutzer eine falsche Reihenfolge eingibt.

Das Programm besteht aus vier Funktionen, die einzeln programmiert und getestet werden.

  1. Liste der Zufallszahlen anzeigen
  2. Liste der Zufallszahlen erweitern
  3. Pins abfragen
  4. Testen

Liste anzeigen

Zuerst wird nur eine Liste (Array) mit drei Elementen erzeugt und angezeigt. Jede Zahl aus der Liste erscheint für 1 Sekunde (1000 ms) auf dem Bildschirm, der danach gelöscht wird. Damit besser sichtbar wird, dass nun eine neue Zahl erscheint, wird nach dem Löschen des Bildschirms 100 ms gewartet. Im Spiel kann eine Zahl ja auch mehrmals hintereinander angezeigt werden und das muss erkennbar sein.
Damit die Zahlen nicht über den Bildschirm wandern, erfolgt die Anzeige nicht als Text, sondern als Zeichen.

liste_zeigen

Liste erweitern

Im nächsten Schritt wird die Liste einfach um eine weitere Zufallszahl erweitert und der zaehler um Eins erhöht.

Zur Zählweise: Wenn in der Liste 3 Zahlen enthalten sind, haben sie in der Liste die Nummern 0, 1 und 2. Die Variable zaehler enthält eine 3. Die Schleife zur Ausgabe zählt dann von 0 bis <3, also bis 2. In der Funktion zur Erweiterung der Liste wird eine neue Zahl an der Stelle 3 angefügt. Und danach erst darf die Variable zaehler um Eins erhöht werden.

Die Funktion zeige_liste zeigt dann alle Elemente von 0 bis <4 an.

Zum Schluss wird beim Start des Programms die Liste mit nur noch einer Zufallszahl gefüllt und der zaehler auf 1 gesetzt. Beim Drücken von B erscheint zum Beginn nur noch eine Zahl und bei jedem weiteren Druck eine Zahl mehr.

liste_zeigen
liste_erweitern

Pins abfragen

Als nächstes kümmert man sich um die Pinabfrage. Der eigentliche Test auf die richtige Reihenfolge der Zahlen kommt erst danach!

Ziel ist es, beim Drücken eines Pins die Nummer des Pins anzuzeigen und beim Loslassen des Pins den Bildschirm wieder zu löschen. Das entspricht der Übung Fass mich an!"

Damit das Anfassen nicht prellt, also der Pin mehrmal ausgelöst wird, muss sofort nach der ersten Berührung eine kurze Zeit gewartet werden und dann über ein Variable der Pin bis zum Loslassen gesperrt werden. Beim Loslassen wird die Variable dann wieder zurückgesetzt.

Wenn es für den Pin 0 funktioniert, erweitert man das Programm um die anderen drei Pins.

liste_zeigen

Wenn alles perfekt zusammengestellt wurde, reagiert der Calliope mini auf das Berühren der einzelnen Pins. Achtung: Berühren heißt, der Pin wird über die Finger mit dem Minus-Pin verbunden.

Das Hauptprogramm besteht nun wieder aus den drei Funktionen zum Anzeigen, Testen und zum Liste erweitern. Die Testfunktion muss aber mehrmals durchlaufen werden; und zwar so lange, bis der Spieler eine Fehleingabe gemacht hat oder die ganze Reihe fehlerlos eingegeben hat. Dafür ist die neue Variable test_fertig, die ein falsch oder ein wahr enthalten kann.

Wenn es notwendig ist, den Test zu beenden, wird die Variable auf wahr gesetzt.

liste_zeigen

Reihenfolge testen

Jetzt ist nur noch der Test zu programmieren. Es muss die fogenden Bedingungen erfüllen:

  • Nach dem Berühren eines Pins darf er bis zum Berühren des nächsten Pins nur einmal aufgerufen werden.
  • Er vergleicht die Nummer des gedrückten Pins mit der aktuellen Stelle im Array.
  • Falls die beiden Ziffern nicht übereinstimmen, wird das Spiel an dieser Stelle komplett beendet.
  • Falls die beiden Ziffern übereinstimmen, wird geprüft, ob das Ende des Arrays erreicht ist.
  • Wenn das der Fall ist, wird das Array um eine Zahl erweitert...
  • Wenn nicht, wird auf den nächsten Vergleich gewartet.

neue_variabeln

Es sind zwei neue Variable zu erzeugen. Beide sind vom Typ logischer Wert und zu Beginn auf falsch, also nein gesetzt.

Die neue und vierte Funktion macht nach ihrem Aufruf zuerst nichts anderes, als die LED in blau aufleuchten zu lassen und durch die Variable ist_vergleich eine weiteren Aufruf zu unterdrücken.

neue_variabeln

Die Variabe ist_vergleich muss nach dem Loslassen des Pins wieder auf falsch gesetzt werden.

neue_variabeln

In der Funktion vergleich wird der Inhalt von pin_merker mit dem aktuellen Eintrag in der Liste verglichen und entschieden, wie es weitergeht.

neue_variabeln

Damit funktioniert das Spiel im Prinzip schon recht gut. Es lassen sich aber noch Feinheiten hineinprogrammieren, die das Spiel noch fluffiger laufen lassen. Z.B. kann man zum Schluss noch anzeigen lassen, wieviele Zahlen man sich fehlerfrei merken konnte.

Liste anzeigen

Zuerst wird nur eine Liste (Array) mit drei Elementen erzeugt und angezeigt. Jede Zahl aus der Liste erscheint für 1 Sekunde (1000 ms) auf dem Bildschirm, der danach gelöscht wird. Damit besser sichtbar wird, dass nun eine neue Zahl erscheint, wird nach dem Löschen des Bildschirms 100 ms gewartet. Im Spiel kann eine Zahl ja auch mehrmals hintereinander angezeigt werden und das muss erkennbar sein.

liste_zeigen

Liste erweitern

Im nächsten Schritt wird die Liste einfach um in einer weiteren Funktion eine neue Zufallszahl erweitert.

Zum Schluss wird beim Start des Programms die Liste mit nur noch einer Zufallszahl gefüllt. Beim Drücken von B erscheint zum Beginn nur noch eine Zahl und bei jedem weiteren Druck eine Zahl mehr.

liste_erweitern

Pins abfragen

Als nächstes kümmert man sich um die Pinabfrage. Der eigentliche Test auf die richtige Reihenfolge der Zahlen kommt erst danach!

Ziel ist es, beim Drücken eines Pins die Nummer des Pins anzuzeigen und beim Loslassen des Pins den Bildschirm wieder zu löschen. Das entspricht der Übung Fass mich an!"

Wenn es für den Pin 0 funktioniert, erweitert man das Programm um die anderen drei Pins.

Damit beim Berühren eines Pins dieser nur einmal reagiert, wird eine logische Variable pin_gedrueckt verwendet, die nach dem Drücken die weitere Eingabe sperrt und erst nach dem Loslassen die Eingabe wieder öffnet. Das Verfahren wird in der Übung Warten ist doof erklärt.

liste_zeigen

Da für die Auwertung die Nummer des gedrückten Pins benötigt wird, legt man diesen Wert in der Variablen pin_merker ab. Das Bild zeigt es für den Pin 0, bei den anderen Pins muss das entsprechend geändert eingefügt werden.

liste_zeigen

Wenn alles perfekt zusammengestellt wurde, reagiert der Calliope mini auf das Berühren der einzelnen Pins. Achtung: Berühren heißt, der Pin wird über die Finger mit dem Minus-Pin verbunden.

Das Hauptprogramm besteht nun wieder aus den drei Funktionen zum Anzeigen, Testen und zum Liste erweitern. Die Testfunktion muss aber mehrmals durchlaufen werden; und zwar so lange, bis der Spieler eine Fehleingabe gemacht hat oder die ganze Reihe fehlerlos eingegeben hat. Dafür ist die neue Variable test_fertig, die ein falsch oder ein wahr enthalten kann.

Wenn es notwendig ist, den Test zu beenden, wird die Variable auf wahr gesetzt.

liste_zeigen

Init-Funktion

Es ist jetzt an der Zeit, eine Initialisierungs-Funktion zu schreiben. In der werden alle Variablen beim Start des Spieles mit konkreten Werten belegt. Das könnte auch in der Start-Funktion erfolgen. Da aber nach dem falschen Eingeben einer Zahl, also dem Spielende, das Spiel mit der Taste A neu gestartet werden soll, muss dort die Init-Funktion erneut aufgerufen werden.

Zu Beginn werden Bildschirm und LED gelöscht. Das ist beim ersten Start nicht notwendig, aber beim Neustart des Spieles ist man dann immer auf der sicheren Seite.

neue_variabeln

Reihenfolge testen

Jetzt ist noch der Test zu programmieren. Es muss die folgenden Bedingungen erfüllen:

  • Nach dem Berühren eines Pins darf er bis zum Berühren des nächsten Pins nur einmal aufgerufen werden.
  • Er vergleicht die Nummer des gedrückten Pins mit der aktuellen Stelle im Array.
  • Falls die beiden Ziffern nicht übereinstimmen, wird das Spiel an dieser Stelle komplett beendet.
  • Falls die beiden Ziffern übereinstimmen, wird geprüft, ob das Ende des Arrays erreicht ist.
  • Wenn das der Fall ist, wird das Array um eine Zahl erweitert...
  • Wenn nicht, wird auf den nächsten Vergleich gewartet.

neue_variabeln

Es wird eine neue Variable ist_vergleich erzeugt, die vom Typ logischer Wert ist. Sie wird beim Start auf falsch gesetzt.

Die neue und vierte Funktion macht nach ihrem Aufruf zuerst nichts anderes, als die LED in blau aufleuchten zu lassen und durch die Variable ist_vergleich eine weiteren Aufruf zu unterdrücken.

neue_variabeln

Die Variabe ist_vergleich muss nach dem Loslassen des Pins wieder auf falsch gesetzt werden.

neue_variabeln

In der Funktion vergleich wird der Inhalt von pin_merker mit dem aktuellen Eintrag in der Liste verglichen und entschieden, wie es weitergeht.

neue_variabeln

Damit funktioniert das Spiel im Prinzip schon recht gut. Es lassen sich aber noch Feinheiten hineinprogrammieren, die das Spiel noch fluffiger laufen lassen. Z.B. kann man zum Schluss noch anzeigen lassen, wieviele Zahlen man sich fehlerfrei merken konnte.

zurück