Das Programm besteht aus vier Funktionen, die einzeln programmiert und getestet werden.
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.
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.
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.
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.
Jetzt ist nur noch der Test zu programmieren. Es muss die fogenden Bedingungen erfüllen:
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.
Die Variabe ist_vergleich muss nach dem Loslassen des Pins wieder auf falsch gesetzt werden.
In der Funktion vergleich wird der Inhalt von pin_merker mit dem aktuellen Eintrag in der Liste verglichen und entschieden, wie es weitergeht.
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.
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.
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.
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.
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.
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.
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.
Jetzt ist noch der Test zu programmieren. Es muss die folgenden Bedingungen erfüllen:
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.
Die Variabe ist_vergleich muss nach dem Loslassen des Pins wieder auf falsch gesetzt werden.
In der Funktion vergleich wird der Inhalt von pin_merker mit dem aktuellen Eintrag in der Liste verglichen und entschieden, wie es weitergeht.
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.