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 eue 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 eue 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.
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 wird eine neue Variable ist_vergleich erzeugt, die vom Typ logischer Wert ist. Wenn der Inhalt der Variablen
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.