6 Würfeln ohne Würfel

In diesem Kapitel geht es um Zufall und darum, wie du ihn deinem Calliope mini beibringst.

Die einführende Worte zu diesem Kapitel wurden von Natalia Prost geschrieben. »Würfeln mit Schwung« wurde von Mario Lukas erstellt. »Symbolschnapper« stammt von Natalia Prost, »Das Reaktionsspiel« von Nadine Bergner und »Farben-Bingo« von Lina Wassong. »Das Wortschatzspiel« wurde von Mario Pesch geschrieben.

6.1 Zufallszahlen

Im PXT-Editor findest du zwei Arten von Zufallswerten, die sich beide in der Befehlsgruppe »Mathematik« befinden.

Abb. 6–1 Zufall-Blöcke in der Befehlsgruppe »Mathematik«

Den zufälligen Wahr- oder Falsch-Wert kannst du dir als einen Münzwurf vorstellen. Bevor du die Münze wirfst, fragst du dich, ob die Zahl oben liegen wird. Wenn die Seite mit der Zahl nach dem Wurf wirklich oben liegt, ist die Antwort auf deine Frage »wahr«, wenn aber die Seite mit der Zahl nach unten aufliegt, dann ist die Antwort »falsch, die Zahl liegt nicht oben«.

Besonders wichtig ist außerdem, dass du verstehst, wie der obere Zufallszahlen-Block funktioniert und wie du ihn für deine Projekte benutzen kannst. Zufallszahlen sind wie die Zahlen auf einem Würfel. Es ist reiner Zufall, welche Zahl von 1 bis 6 du würfelst. Es gibt aber auch Würfel mit einer anderen Seitenzahl als 6. Natürlich sind es dann keine echten Würfel mehr, wie du es in der Schule gelernt hast. Aber diese »Spezialwürfel« mit 8, 10, 12 oder 20 Seiten werden bei manchen Brettspielen genauso benutzt wie ein normaler Würfel. Nur dass diese Spezialwürfel eben eine zufällige Zahl zwischen 1 und 8 oder zwischen 1 und 20 anzeigen, je nachdem, wie viele Seiten dieser Würfel hat.

Abb. 6–2 Spezielle »Würfel« mit mehr als 6 Seiten und Zahlen

Computerprogramme beginnen mit dem Zählen oft bei der 0. So ist es auch wieder bei den Zufallszahlen. Auf einem Würfel wäre also auch eine 0 als mögliche Zahl. Wenn du in dem Zufallszahlen-Block eine Zahl zwischen 0 und 6 einstellst, dann würfelt das Programm mit einem 7-seitigen Spezialwürfel, der die Zahlen 0, 1, 2, 3, 4, 5 und 6 hat. Aber wahrscheinlich wolltest du wirklich einen Würfel mit nur 6 Seiten und den Zahlen von 1 bis 6, oder? Dann musst du einen kleinen Trick im PXT-Editor machen. Und zwar lässt du das Programm nur eine Zahl zwischen 0 und 5 auswählen. Dann ist es ein Würfel mit 6 Seiten und den Zahlen 0, 1, 2, 3, 4 und 5. Kannst du dir schon vorstellen, wie du trotzdem auf die Zahlen 1, 2, 3, 4, 5 und 6 kommst? Es ist ganz einfach: Rechne zu der ersten Zufallszahl + 1 dazu. Dann kann dein Ergebnis nicht kleiner als 1 (0+1) und höchstens 6 (5+1) sein. Die im nächsten Bild verwendeten Blöcke befinden sich beide in der Befehlsgruppe »Mathematik«.

Abb. 6–3 Eine Zufallszahl von 1 bis 6 erzeugen – wie auf einem echten Würfel

Nachdem du nun die Besonderheiten von Zufallszahlen in Computerprogrammen kennst, kannst du mit dem ersten Spiel dazu anfangen.

6.2 Würfeln mit Schwung …

Bisher hast du viel über Zahlen und Zufall gelernt. Jetzt bist du in der Lage, deine Erfahrungen über Zufallszahlen mit den Sensoren deines Calliope mini zu kombinieren. Das folgende Projekt zeigt dir, wie du einen Würfel programmieren kannst, der durch Schütteln deines Calliope-Boards die Zahlen anzeigt.

Abb. 6–4 Der Calliope mini als Würfel

6.2.1 Dein Calliope wird zu einem einfachen Würfel

Abb. 6–5 Wenn geschüttelt …

Nachdem du im PXT-Editor ein »Neues Projekt« erstellt hast, kannst du mit der Programmierung beginnen. Im ersten Schritt wählst du aus der Rubrik »Eingabe« den Programmierbefehl »wenn geschüttelt« und schiebst ihn auf die Programmierfläche.

Abb. 6–6 Wenn geschüttelt, dann Zufallszahl …

Dein Calliope mini merkt jetzt, wenn du es schüttelst. Allerdings musst du das Programm so erweitern, dass dein Board weiß, was es tun soll, wenn es geschüttelt wird. Hierzu fügst du dem Programm einen neuen Platzhalter hinzu. Du kannst den neuen Platzhalter mit dem Namen »Zufallszahl« versehen.

In diesem Zustand zeigt dein Calliope mini, wenn er geschüttelt wird, immer die Zahl 0 an.

Da du durch das Schütteln deines Calliope aber eine Zahl würfeln möchtest, musst du dein Programm noch ein wenig abändern. Dies tust du, indem du dein Programm mit dem Programmierbefehl »wähle zufällige Zahl zwischen« erweiterst. Du findest diesen Programmierbefehl in der Gruppe »Mathematik«.

Abb. 6–7 Es soll eine zufällige Zahl zwischen 0 und 4 gebildet werden

Durch dieses Programm ist dein Calliope mini in der Lage, beim Schütteln eine Zahl zwischen 0 und 4 zu würfeln. Leider bekommst du das noch nicht mit, da der Calliope mini noch nichts anzeigt. Dafür musst du noch einen weiteren Befehl hinzufügen. Schieb hierzu ganz einfach den Programmierbefehl »zeige Nummer« auf die Programmierfläche. Achte darauf, dass du den Platzhalter mit dem von dir gewählten Namen »Zufallszahl« auswählst.

Abb. 6–8 Die Zufallszahl soll angezeigt werden

Du kannst dein Programm nun im Simulator im PXT-Editor testen, indem du entweder den Knopf zum Schütteln des Calliope mini drückst oder indem du die Maus über den Calliope-Simulator bewegst.

Abb. 6–9 Das Spiel im PXT-Simulator

Beim Herumspielen mit deinem Schüttel-Würfel wirst du schnell zwei ungewöhnliche Dinge feststellen. Zum einen kann dein Würfel bisher nur die Zahlen 0 bis 4 würfeln und zum anderen würfelt dein Calliope die Zahl 0, die auf einem richtigen Würfel nicht vorkommt.

Du hast sicher schon richtig erkannt, dass du dein Programm nur etwas verändern musst, um diese Probleme zu lösen. Am besten beginnst du mit der Lösung des ersten Problems. Hierzu ist kein neuer Programmbefehl notwendig. Du musst nur den Programmbefehl »wähle eine zufällige Zahl« etwas anpassen, indem du aus der 4 eine 6 machst.

Abb. 6–10 Du passt die zufälligen Zahlen an

Du kannst nun dein Programm wieder im Simulator testen. Nach einigen Würfelversuchen wird dir auffallen, dass der Calliope im Simulator nun tatsächlich bis 6 würfelt. Jedoch wird hin und wieder immer noch die Zahl 0 angezeigt. Leider startet der Programmbefehl »wähle eine zufällige Zahl« immer mit der Zahl 0, somit wird die Zahl 0 auch immer wieder durch Zufall gewählt. Dieses Problem kannst du mit einem Trick umgehen. Hast du vielleicht selbst eine Idee, wie dieser Trick funktionieren könnte?

Dein Calliope mini merkt sich die gefundene Zufallszahl im Platzhalter mit dem Namen »Zufallszahl«. Erst danach gibt das Board die Zufallszahl mit dem Programmbefehl »zeige Nummer« aus. Stell dir vor, dein Calliope mini findet nun durch Zufall die Zahl 0. Wenn du nun die kleine Berechnung 0+ 1 durchführen lässt, ändert sich die Zahl 0 im Platzhalter auf 1. Diese kleine Rechnung kannst du für jede vom Calliope mini gefundene Zufallszahl durchführen. Durch eine kleine Ergänzung deines Programms durch den Programmbefehl »ändere Zufallszahl um 1« hast du diese kleine Berechnung eingebaut.

Abb. 6–11 Das Programm ergänzen um eine kleine Berechnung

Du weißt, dass die Berechnung für die Zahl 0 funktioniert. Was ist jedoch mit den Zahlen 1, 2, 3, 4, 5 und 6? Welches Ergebnis berechnet der Programmbefehl »ändere Zufallszahl um 1«, wenn der Calliope mini sich eine dieser Zahlen im Platzhalter gemerkt hat? Die folgende Tabelle hilft dir dabei, die Ergebnisse für die restlichen Zahlen zu überprüfen.

Zufallszahl Rechnung Ergebnis
0 +1 1
1 +1 2
2 +1 3
3 +1 4
4 +1 5
5 +1 6
6 +1 7

Tab. 6–1 Die Ergebnisse von »ändere Zufallszahl um 1« in einer Tabelle dargestellt

In der ersten Zeile steht, was du bereits weißt, nämlich dass die Berechnung für die Zufallszahl 0 funktioniert. Das Ergebnis ist die Zahl 1, und somit eine Zahl, die auf einem Würfel mit sechs Seiten vorkommt. Wenn du dir nun die letzte Zeile der Tabelle anschaust, siehst du, dass es ein Problem gibt, wenn die Zufallszahl 6 beträgt. In diesem Fall ergibt die Berechnung mit dem Programmbefehl »ändere Zufallszahl um 1« die Zahl 7. Aber die Zahl 7 kommt auf einem Würfel mit 6 Seiten nicht vor. Bei genauerem Betrachten der Ergebnisse in der Tabelle fällt dir sicher auf, dass die Zahlen 1 bis 6 im Ergebnis vorkommen. Nur die Zahl 7 stört hier. Aus diesem Grund lässt du die Berechnung aus der letzten Zeile »6+1« einfach weg. Hierzu änderst du dein Programm so ab, dass es nur noch Zufallszahlen von 0 bis 5 erzeugt.

Abb. 6–12 Und noch eine kleine Änderung

Einige Versuche mit dem Simulator zeigen dir, dass dein Würfel nun die richtigen Zahlen, wie sie auf einem Würfel mit 6 Seiten vorkommen, anzeigt.

Dein Programm ist nun eigentlich fertig, aber findest du nicht auch, dass die Anzeige einfacher Zahlen auf deinem Calliope nicht wirklich wie ein echter Würfel aussieht? Schöner wäre es, wenn dir eine Augenzahl wie auf einem echten Würfel durch Punkte angezeigt würde.

6.2.2 Calliope-Schüttelwürfel mit Augenzahlen

Abb. 6–13 Der Calliope mini stellt die Würfelzahl auch dar

Jetzt geht es darum, dein Würfelprogramm auch wie einen richtigen Würfel aussehen zu lassen. Hierzu verwendest du Programmierbefehle, die du bereits in Abschnitt 4.1.2 kennengelernt hast.

Zunächst beginnst du mit der Anzeige der Augenzahl mit Hilfe der LED-Anzeige. In Abschnitt 2.2 hast du gelernt wie du deinen Calliope mini zum Lachen bringst. Ähnlich funktioniert die Anzeige der Augenzahl. Bevor du beginnst, kannst du den Programmbefehl »zeige Nummer Zufallszahl« entfernen, denn den benötigst du nun nicht mehr.

Abb. 6–14 Der Programmbefehl »zeige Nummer Zufallszahl« wurde entfernt

Es bleibt nur das Würfelprogramm ohne eine Ausgabe übrig. Füge nun den Programmbefehl »zeige LEDs« im Editor hinzu und markiere die LED in der Mitte. Diesen Programmbefehl benutzt dein Calliope mini später zum Anzeigen der Augenzahl 1.

Abb. 6–15 Füge »zeige LEDs« hinzu

Diesen Schritt wiederholtst so lange, bis du für jede Seite deines Würfels einen Programmbefehl erstellt hast.

Abb. 6–16 Du stellst die Würfelaugen auf dem Calliope-Display nach

Du bist noch nicht ganz fertig, da du deinem Calliope mini auch beibringen willst, wann er die richtige Augenzahl anzeigen soll. Die eben erzeugten Programmbefehle kannst du zunächst zur Seite schieben, da du jetzt etwas Platz benötigst, um einige »wenn dann«-Programmierbefehle in dein Programm einzubauen. Durch die »wenn dann«-Programmierbefehle entscheidet dein Calliope-Board, welche Augenzahl zu der gefundenen Zufallszahl passt.

Du beginnst mit der Augenzahl 1. Schiebe also einen »wenn dann«-Programmierbefehl auf die Programmierfläche. Dieser Befehl soll überprüfen, ob die Zufallszahl genau 1 ist. Wenn dies der Fall ist, soll auf der LED-Anzeige die passende Ausgabe angezeigt werden. Dein Programm sollte nun wie folgt aussehen:

Abb. 6–17 Mit einem »wenn-dann«-Befehl kombinierst du Zufallszahl mit ihrer Darstellung.

Du kannst das Programm nun im Simulator testen, wirst aber feststellen, dass du einige Würfelversuche benötigst, bis die Augenzahl 1 angezeigt wird. Bei deinen restlichen Versuchen passiert nichts. Das liegt daran, dass du deinem Calliope mini bisher nur gesagt hast, was es machen soll, wenn die Zahl 1 gewürfelt wird. Deshalb musst du für die Augenzahlen 2, 3, 4, 5 und 6 auch solche »wenn dann«-Regeln in dein Programm einbauen. Da du mittlerweile schon ein echter Profi-Programmierer bist, sollte dir dieser Vorgang recht leicht fallen. Das nächste Bild zeigt dir, wie das fertige Programm aussieht.

Glückwunsch! Du hast nun einen Calliope-Würfel, den du zum Beispiel beim Spielen von Brettspielen benutzen kannst.

6.2.3 Was ist noch möglich?

Die hier genannten Beispiele sind nur einige Ideen, wie du aus deinem einfachen Calliope-Würfel einen echten Hightech-Würfel machen kannst. Sicher hast du aber noch bessere Ideen!

6.3 Symbolschnapper

Bei diesem Spiel geht es darum, wer als Erstes das angezeigte Symbol schnappt, das auf dem Calliope mini dargestellt wird. Der Calliope mini liegt auf dem Tisch, wo ihn alle Mitspieler gut sehen können. Ihr könnt dieses Spiel zu zweit spielen oder mit mehr Mitspielern, aber alle müssen den Calliope mini gut sehen können. Jeder Spieler ist der Reihe nach dran und darf den Calliope mini schütteln. Wenn der Calliope mini geschüttelt wird, zeigt er eines von verschiedenen Symbolen. Welche Symbole das sind, habt ihr euch vorher überlegt und dem Calliope beigebracht.

Abb. 6–18 Schüttle und schnapp dir das angezeigte Symbol.

Bevor du mit der Programmierung beginnst, musst du als Erstes die Symbolplättchen vorbereiten, die du für das Spiel verwenden willst.

6.3.1 Symbolplättchen ausmalen

Druck die Symbolvorlage aus, die du hier herunterladen kannst: http://www.papiercomputer.de/informatik/calliope/symbolspiel. Du siehst dort 20 Felder, die jeweils 25 Kästchen haben. Jedes Kästchen steht dabei für eine der 25 LEDs auf deinem Calliope mini. In diese Felder kannst du beliebige Symbole und Muster eintragen, indem du einzelne Kästchen rot (oder in irgendeiner anderen Farbe) ausmalst. Die ausgemalten Kästchen soll der Calliope später als leuchtende LED anzeigen.

Hinweis

Du kannst auch einfaches kariertes Papier benutzen, 5 x 5 Kästchen große Felder umranden und die einzelnen Kästchen ausmalen.

Schneide die Symbolplättchen noch nicht aus.

Abb. 6–19 Ausgefüllte Symbolvorlage mit Beispielsymbolen

Wenn es dir zu lange dauert, jedes Kästchen (fast) komplett auszufüllen, kannst du stattdessen auch nur ein Kreuz oder einen dicken Punkt in das Kästchen machen. Du und deine Mitspieler müssen aber gut erkennen können, welche der Kästchen markiert sind, damit sie das LED-Muster vom Calliope mini wiederfinden können.

Abb. 6–20 Verschiedene Arten, die Symbolvorlage auszumalen

Vergiss nicht, dass die Plättchen nach dem Ausschneiden auch ganz verdreht auf dem Tisch liegen und die Muster dadurch anders aussehen können.

Hinweis

Wenn du trotzdem willst, dass die Symbole alle als unterschiedlich erkannt werden, musst du vor dem Ausschneiden die Unterseite der Symbole besonders markieren, zum Beispiel mit einer dicken roten Linie.

Abb. 6–21 Gleiches Muster mit markierter Unterseite

Nach dieser Vorbereitung kannst du nun den PXT-Editor öffnen und mit dem Programmieren beginnen. Erstelle ein neues Projekt und nenne es »Symbolschnapper«.

6.3.2 Beim Schütteln ein bestimmtes Symbol anzeigen

Im vorherigen Kapitel hast du gelernt, wie du Platzhalter im PXT-Editor erstellst. Zur Erinnerung: Klicke in der Befehlsgruppe »Platzhalter« auf »Neuen Platzhalter anlegen«. Dann erscheint ein Fenster, in dem du dem neuen Platzhalter einen Namen geben kannst. Nenn diesen Platzhalter »Symbolzahl«, weil das Programm im nächsten Schritt das passende Symbol zu dieser Zahl anzeigen soll.

Abb. 6–22 Nenn den neuen Platzhalter »Symbolzahl«.

Hol dir nun einen »wenn dann«-Befehl aus der Befehlsgruppe »Logik« und eine »dauerhaft«-Klammer aus den »Grundlagen«. Das Programm soll prüfen, welchen Wert die Symbolzahl hat, und wenn die Symbolzahl 1 ist, dann soll es das erste Symbol auf dem LED-Display anzeigen. Dafür brauchst du noch einen Befehl aus der Befehlsgruppe »Logik«: »0 = 0«. Ersetze das »wahr« hinter dem »wenn« mit diesem »0 = 0«-Block und ändere eine der Zahlen in eine 1. An die Stelle der anderen Zahl ziehst du einen Block mit dem Platzhalter »Symbolzahl«.

Abb. 6–23 Auswertung der Symbolzahl 1

Schau dir jetzt kurz an, was im Simulator auf der linken Seite passiert. Siehst du etwas? Warum nicht? Was glaubst du, wie groß die Symbolzahl jetzt ist? Richtig, da du keinen Befehl verwendet hast, um die Symbolzahl zu verändern, ist sie 0. Aber das Symbol wird nur gezeigt, wenn die Symbolzahl 1 ist. Du musst die Symbolzahl verändern, um etwas zu sehen. Wie du in der Spielbeschreibung gelesen hast, soll die Anzeige dann verändert werden, wenn der Calliope mini geschüttelt wird.

Als Nächstes brauchst du also einen Programmierbefehl, mit dem der Calliope mini auf Schütteln reagiert. Du findest den Befehl dafür in der Befehlsgruppe »Eingabe«. Danach wählst du den »ändere Platzhalter auf«-Befehl aus der Befehlsgruppe »Platzhalter« und ziehst ihn in die pinkfarbene Klammer. Klicke auf das kleine Dreieck und wähle deinen eigenen neuen Platzhalter »Symbolzahl« aus. Nun kannst du einstellen, dass die Symbolzahl bei jedem Schütteln auf 1 geändert wird. Probier dies im Simulator aus und bewege dort die Maus hin und her oder drück einfach auf den neu erschienenen »SHAKE«-Knopf. Du wirst sehen, dass nun leuchtende LEDs in Form des von dir gemalten Symbols erscheinen.

Abb. 6–24 Das erste Symbol wird angezeigt.

Aber natürlich hast du mehr als nur dieses eine Symbol. Im nächsten Schritt wirst du darum alle anderen Symbole, die du dir vorhin ausgedacht hast, als LED-Muster im PXT-Editor einzufügen und einer Zahl zuordnen.

6.3.3 Alle LED-Symbole malen

Du könntest dir nun 19-mal immer wieder einen neuen »wenn dann«-Befehl aus »Logik« holen, dazu einen »0 = 0«-Block und einen »zeige LEDs«-Befehl aus den »Grundlagen«. Aber schon beim Lesen dauert dir das bestimmt viel zu lange, oder? Eine einfache und außerdem viel schnellere Möglichkeit besteht darin, dass du deinen schon vorhandenen »wenn dann«-Befehl verdoppelst. Dafür musst du mit der rechten Maustaste auf den »wenn dann«-Befehl klicken. Dann erscheint eine kleine Auswahlliste. Wähle dort den obersten Eintrag »Duplizieren« aus.

Abb. 6–25 Befehle duplizieren

Du bekommst dadurch einen neuen »wenn dann«-Befehl, der die gleichen Programmierbefehle und-blöcke beinhaltet. Klicke mit der linken Maustaste auf das Wort »wenn« und zieh die ganze Kombination nach unten bis zu der Stelle zwischen dem ersten »wenn dann«-Befehl und dem Ende der Dauerschleife. Ändere die Zahl hinter »=« auf 2 und klicke so viele LEDs an oder aus, bis es aussieht wie das Symbol im zweiten Feld deiner ausgemalten Symbolvorlage.

Abb. 6–26 Symbolzahl 1 und Symbolzahl 2 zeigen verschiedene LEDs.

Wiederhole diesen »Duplizieren-Schritt« so oft, bis du genauso viele »wenn dann«-Befehle hast, wie du Symbolplättchen ausgemalt hast. Wenn du jedes Feld in der Symbolvorlage mit einem Symbol ausgemalt hast, dann brauchst du 20 »wenn dann«-Befehle. Der letzte »wenn dann«-Befehl sollte überprüfen, ob die Symbolzahl = 20 ist. Jede Zahl von 1 bis 20 sollte nur in einem »=«-Block vorkommen.

Geh zurück zu deiner »wenn geschüttelt«-Klammer und ändere die Symbolzahl dort auf irgendeine andere Zahl zwischen 1 und 20. Probiere wieder das Schütteln im Simulator aus. Dir wird das passende Symbol angezeigt, wie du es im »wenn dann«-Befehl zu dieser Zahl angegeben hast.

Hinweis

Wenn deine LED-Anzeige ganz schnell zwischen zwei verschiedenen Symbolen hin und her wechselt, hast du einen Fehler gemacht und die gleiche Zahl in mehreren »wenn dann«-Befehlen verwendet. Dies kann leicht passieren, wenn du vergisst, die Zahl zu ändern, nachdem du die Befehle verdoppelt hast.

Probier irgendeine andere Zahl aus und schüttele noch einmal. Wenn du alle Symbole von der Symbolvorlage übertragen hast, kannst du die einzelnen Symbolplättchen ausschneiden.

6.3.4 Zufälliges Symbol anzeigen

Du willst natürlich etwas anderes, als die Zahl jedes Mal im Editor zu verändern. Stattdessen soll bei jedem Schütteln des echten Calliope mini irgendein zufälliges Symbol angezeigt werden.

Dafür gibt es im PXT-Editor einen Zufallszahl-Block. Du findest ihn in der Befehlsgruppe »Mathematik«. Der Block hat eine Ausbuchtung auf der linken Seite, du kannst ihn also überall dort benutzen, wo eine Zahl gebraucht wird.

Abb. 6–27 Zufallszahl-Block in der Befehlsgruppe »Mathematik«

Setz den »Zufallszahlen«-Block an die Stelle mit der Zahl, die du soeben selbst verändert hast. Auf der Symbolvorlage hast du Platz für 20 Symbole, also wirst du wahrscheinlich zuerst versuchen, eine Zufallszahl von 0 bis 20 zu bekommen, wenn geschüttelt wird. Aber weil die Zufallszahlen im PXT-Editor immer bei 0 anfangen, würfelst du in Wahrheit einen Würfel mit 21 Seiten mit den Zahlen 0, 1, 2 bis 19 und 20. Da du aber keinen Symbolblock zur Symbolzahl 0 hast, musst du die Zufallszahl um 1 erhöhen. Du findest den »0 + 0«-Block ebenfalls in der Befehlsgruppe »Mathematik«. Ersetze dort eine 0 durch den Zufallsblock und die andere 0 durch 1. Nun brauchst du aber nicht 20+1 Symbolplättchen, sondern 19+1=20 Symbolplättchen.

Damit du den Wechsel von einem Symbol zu einem anderen Symbol besser sehen kannst, kannst du bei jedem Schütteln den Bildschirm kurz löschen. Benutze dafür den Befehl »Bildschirminhalt löschen« aus der Befehlsgruppe »Grundlagen«.

Abb. 6–28 Zufällige Symbolzahl beim Schütteln

Da die Symbolzahl in der Dauerschleife ständig überprüft wird und das passende Symbol dazu anzeigt, führt eine Veränderung der Symbolzahl auch zur Änderung der LED-Anzeige. Probier dein Programm im Simulator aus. Du kannst das Spiel schon jetzt auf das echte Calliope mini überspielen und alleine oder mit deinen Freunden versuchen, das angezeigte Symbol als Erstes vom Tisch zu schnappen. Dabei kann es passieren, dass ein Symbol, das schon weggeschnappt wurde, noch einmal auf der LED-Anzeige erscheint, weil zufällig die gleiche Zufallszahl wieder (und wieder) ausgewählt wird vom Programm. Das ist nicht schlimm, weil ihr dann einfach noch einmal schütteln könnt.

6.3.5 Punkte zählen

Bisher ist es so, dass du die angezeigte Symbolkarte schnappen und vor dir ablegen kannst, um am Ende zu wissen, wie viele Symbole du am schnellsten gefunden hast. Nun kannst du versuchen, das Programm so zu verändern, dass es die Punkte von dir und deinem Mitspieler zählen kann. Du wirst sicherlich keine Probleme mehr haben, einen neuen Platzhalter für die Punkte anzulegen und ihn bei jedem Knopfdruck auf Knopf »A« zu erhöhen. Zeige auch etwas auf den LEDs an, damit ihr seht, dass die Punkte erhöht wurden.

Abb. 6–29 Punkte von Spieler A erhöhen

Mach das Gleiche für deinen Mitspieler B. Wenn du beide Spielerpunkte im Programm hast, könnt ihr die Symbolplättchen auf dem Tisch liegen lassen. Der Spieler, der am schnellsten war, darf dann einfach auf seinen Knopf »A« oder »B« drücken und erhält einen Punkt dazu. Dann ist es auch nicht schlimm, wenn das gleiche Symbol mehrmals angezeigt wird.

Überlege dir anschließend selbst, wann euer Spiel oder eine Runde beendet sein soll. Wenn ein Spieler 8 Punkte hat? Dann müsstest du »dauerhaft« überprüfen, ob die Punkte größer als (>) 7 sind. Oder wenn ihr auf beide Knöpfe gleichzeitig drückt und wer dann die meisten Punkte hat? Dir fällt bestimmt noch etwas anderes ein, probier es aus.

Abb. 6–30 Beispiel für Spielende bei Knopfdruck auf »A« und »B« gleichzeitig

Wenn du das Spiel schon heruntergeladen und ausprobiert hast, hast du vielleicht bemerkt, dass die LED-Anzeige beim Schütteln mehr als einmal verändert wird. Das liegt daran, dass die Befehle in der »wenn geschüttelt«-Klammer mehrmals ausgeführt werden. Um das zu verhindern, kannst du auch einen kurzen »pausiere«-Befehl einfügen, damit das Programm 1 Sekunde wartet, bevor es auf das nächste Schütteln reagieren kann. Wenn dein Code ungefähr so aussieht wie auf dem nächsten Bild, kannst du das Spiel auf den Calliope mini herunterladen und alleine oder mit Freunden spielen.

Abb. 6–31 Das fertige Programm für das Spiel »Symbolschnapper« (Ausschnitt).

6.3.6 Noch mehr Zufall

Wie wäre es mit der Anzeige eines ganz zufälligen Musters? Im Projekt Sanduhr (siehe Abschnitt 5.3) hast du gesehen, wie du die LEDs schrittweise durchgehen kannst, um einzelne LEDs auszuschalten. Dafür brauchst du in diesem Projekt auch die neuen Platzhalter »reihe« und »sprünge«. Beginne mit einer leeren LED-Anzeige und geh durch jede einzelne LED durch, aber ohne eine Pause zu machen. Bei jeder LED, also in der inneren »Wiederholen«-Klammer wählst du einen zufälligen Wahr- oder Falsch-Wert oder eine zufällige Zahl zwischen 0 und 1. Entweder die LED ist zufällig an (wahr oder 1) oder die LED ist zufällig aus (falsch oder 0). Der Calliope mini wertet den Platzhalter »LEDleuchtet« aus und entscheidet, ob er die LED an dieser Stelle zeichnen, also LED anmachen, oder (ab)schalten soll. Dadurch wird das angezeigte LED-Muster sehr zufällig.

Abb. 6–32 LEDs zufällig an- oder ausmachen

Abb. 6–33 Zufälliges Muster wird angezeigt.

Wie musst du die grünen »Wiederholen«-Klammern bauen und wie und wo musst du die Platzhalter »reihe« und »spalte« verändern (+1 oder auf 0), damit jedes Mal beim Schütteln ganz neue Muster angezeigt werden? Schau dir die Sanduhr noch einmal an, wenn du Tipps brauchst.

Mit dieser Variante könntet ihr nun ein Spiel spielen, bei dem ihr zum Beispiel am schnellsten zählen müsst, wie viele LEDs auf dem Calliope mini leuchten. Wer als Erster die richtige Zahl zwischen 0 (alle Lampen aus) und 25 (alle an) ruft, darf auf seinen Knopf drücken und erhält einen Punkt.

Wenn dir das zu einfach war, hier noch eine Zusatzaufgabe: Lass den Calliope mini selbst ausrechnen und anzeigen, wie viele LEDs angeschaltet sind. Dafür braucht ihr einen neuen Platzhalter, den ihr nach jedem »zeichne«-Befehl um 1 erhöht. Ihr könnt euch das Ergebnis dann zum Beispiel durch Drücken auf »A+B« anzeigen lassen und seht sofort, ob eure selbst gezählte Antwort richtig war. Danach drehst du das Display nach unten um, und der Platzhalter wird wieder auf 0 gesetzt.

Abb. 6–34 Variante mit zufälligem Muster, das schnell gezählt werden soll.

6.4 Das Reaktionsspiel

6.4.1 Wer ist die oder der Schnellste?

Lass uns doch einmal deine Reaktionsgeschwindigkeit und die deiner Freunde testen! Das geht natürlich am besten mit einem Reaktionsspiel! In diesem Abschnitt kannst du ein solches Reaktionsspiel erstellen. Du darfst es gerne nach eigenen Wünschen verändern und anpassen. Du könntest zum Beispiel andere Symbole auf dem LED-Display benutzen oder andere Wartezeiten verwenden. Aber nun geht es erst einmal los!

Die Grundidee des Spiels ist, dass auf dem LED-Display plötzlich ein Symbol erscheint und dann beide Spieler möglichst schnell auf den passenden Knopf drücken, also Spieler A auf Knopf »A« und Spieler B entsprechend auf Knopf »B«. Ihr haltet den Calliope mini also bei diesem Spiel zwischen euch.

Abb. 6–35 Position der Spieler beim Reaktionsspiel

6.4.2 Symbol nach zufälliger Zeit anzeigen

Ganz entscheidend für dieses Spiel ist, dass das Symbol immer nach einer zufälligen Zeit erscheint, damit sich kein Spieler darauf vorbereiten kann. Wie ihr ein Symbol (zum Beispiel ein Smiley oder ein Herz) auf dem Calliope mini anzeigt, wisst ihr ja bereits. Das ist also nun die erste Aufgabe. Lasst ein Symbol dauerhaft auf dem LED-Display anzeigen.

Damit das Symbol aber nicht direkt beim Start des Programms angezeigt wird, braucht dein Programm vorher noch eine Pause. Mit dem Befehl »pausiere (ms)« kannst du festlegen, wann das Smiley erscheint. Jetzt kommt der Zufall ins Spiel!

Damit das Spiel spannend bleibt, soll das Smiley immer nach 1 bis 5 Sekunden erscheinen. Da man in den Befehl »pausiere (ms)« eine Zeit in Millisekunden eingeben muss, soll die Zufallszahl also zwischen 1000 und 5000 liegen. Jetzt ist ein bisschen Mathematik gefragt.

Suche zuerst den Baustein für Zufallszahlen. Kleiner Tipp: Hier geht es um »Mathematik«. Dieser Befehl erstellt allerdings eine Zufallszahl zwischen 0 und 4 (oder einer anderen oberen Grenze). Damit die Zufallszahl also zwischen 1000 und 5000 liegt, musst du zuerst eine 1 hinzuaddieren.

Abb. 6–36 Befehl für eine Zufallszahl zwischen 1 und 5

Mit diesem Befehl berechnet der Calliope mini also eine Zufallszahl zwischen 1 und 5. Du musst sie in einem zweiten Schritt nur noch mit 1000 multiplizieren, dann hast du eine Zufallszahl zwischen 1000 und 5000.

Sehr gut, der erste Schritt ist geschafft, das Smiley erscheint zufällig nach 1 bis 5 Sekunden.

Abb. 6–37 Befehl für eine Zufallszahl zwischen 1000 und 5000

Bisher passiert dies jedoch nur beim allerersten Start des Programms. Du kannst dies testen, indem du das Programm auf den Calliope mini überträgst und zum Neustarten den Reset-Knopf benutzt. Später soll das Smiley wieder verschwinden, wenn einer der beiden Spieler korrekt den Knopf gedrückt hat.

6.4.3 Platzhalter speichert, ob »Smiley an«

Jetzt geht es darum, zu messen, welcher Spieler zuerst den Knopf gedrückt hat. Dazu kümmerst du dich am besten zuerst um Spieler A mit Knopf »A«. Das Gleiche für den zweiten Spieler nachzubauen, ist dann später gar nicht mehr so schwer.

Los geht es also mit dem Befehl »wenn Knopf A gedrückt« (Tipp: Hier geht es um »Eingaben«). Was soll denn dann passieren? Na ja, wenn das Smiley leuchtet, soll der Spieler einen Punkt bekommen. Dazu muss der Calliope mini aber wissen, ob das Smiley leuchtet, sonst bekommt nachher auch ein Spieler Punkte, der viel zu früh gedrückt hat. Da der Calliope mini selbst nicht sehen kann, was auf dem LED-Display angezeigt wird, brauchst du hierfür einen Platzhalter. Falls du nicht (mehr) weißt, wozu man einen Platzhalter braucht und wie man ihn benutzt, dann schau dir die Projekte in Kapitel 5 an.

Damit du später nicht durcheinanderkommst, solltest du den Platzhalter eindeutig benennen. Wie wäre es zum Beispiel mit »SmileyAn«? Da ein solcher Platzhalter nur Zahlen speichern kann, musst du hier ein wenig tricksen. Nimm doch einfach an, dass wenn in dem Platzhalter eine 0 gespeichert ist, dies bedeutet, dass der Smiley nicht leuchtet, und wenn im Platzhalter eine 1 gespeichert ist, das Smiley leuchtet.

Nun musst du dein Programm in der Dauerschleife so erweitern, dass der Platzhalter »SmileyAn« auf 1 gesetzt wird, wenn das Smiley leuchtet. Wenn das Smiley wieder ausgeschaltet wird, muss auch der Platzhalter wieder auf 0 gesetzt werden, aber darum kannst du dich später noch kümmern. Füge also den Befehl »ändere SmileyAn auf 1« in deiner Dauerschleife direkt hinter die Anzeige des Smileys ein.

Abb. 6–38 Platzhalter »SmileyAn« muss eine 1 speichern, wenn das Smiley angezeigt wird.

6.4.4 Auf Knopfdruck reagieren

In der Abfrage »wenn Knopf A gedrückt« musst du nun zusätzlich abfragen, ob das Smiley leuchtet. Das machst du mit dem »wenn-dann«-Befehl, den du zu Beginn von Kapitel 4 kennengelernt hast. Bei der Bedingung musst du den Wert des Platzhalters »SmileyAn« mit einer »1« vergleichen, denn wenn eine »1« im Platzhalter gespeichert ist, bedeutet dies ja, dass das Smiley gerade leuchtet.

Abb. 6–39 Bedingung, wenn Taster gedrückt und Smiley leuchtet

Wenn Spieler A also seinen Knopf »A« drückt, während das Smiley leuchtet, dann hat er richtig reagiert. Für einen Zwischentest kannst du einen Ton ausgeben lassen, damit du siehst, ob auch alles klappt. Später wird in diesem Moment der schnellere Spieler einen Punkt erhalten. Zum Testen kannst du schon drücken, bevor das Smiley erscheint, und dann, während das Smiley leuchtet. Der Ton darf nur dann ertönen, wenn das Smiley leuchtet und du gleichzeitig auf Knopf »A« drückst. Damit du mehrfach testen kannst, einfach mit dem »Reset«-Knopf das Spiel neustarten.

6.4.5 Das Smiley muss verschwinden

Allerdings gibt es nun ein Problem … Das Smiley leuchtet immer weiter, und auch der Ton ertönt immer weiter. So könnte Spieler A ja ganz viele Punkte sammeln. Also muss das Smiley wieder verschwinden.

Um das Smiley verschwinden zu lassen, kannst du den Befehl »Bildschirminhalt löschen« benutzen. Du musst ihn direkt unter den Befehl zur Tonausgabe einfügen.

Abb. 6–40 Löscht das Smiley, wenn Spieler A richtig reagiert hat.

Wenn du dein Spiel nun testest, solltest du einen Fehler feststellen. Das Smiley ist weg, aber Spieler A sammelt trotzdem weiter Punkte. Das liegt daran, dass das Calliope mini immer noch denkt, das Smiley würde leuchten, da der Platzhalter »SmileyAn« immer noch eine »1« speichert.

Dafür musst du in dein Programm zum Drücken von Knopf »A« noch den Befehl »ändere »SmileyAn« auf »0« (unter den Befehl »Bildschirminhalt löschen«) einfügen.

Abb. 6–41 Setzt zusätzlich den Platzhalter »SmileyAn« auf 0

Es ist Zeit für einen nächsten Test. Kontrolliere dabei einmal die wichtigsten Funktionen deines Programms:

Jetzt kann Spieler A keine weiteren Töne erzeugen, also Punkte sammeln, bis das Smiley nach einer weiteren zufälligen Pause wieder erscheint. Hmmm. Punkte sammeln, das war ja das Ziel. Darum solltest du dich jetzt kümmern.

6.4.6 Punkte zählen

Leg dafür einen weiteren Platzhalter »PunkteSpielerA« an. Darin sollen die Punkte für Spieler A gesammelt werden. Dieser Platzhalter muss also bei jeder richtigen Reaktion (dem Drücken auf Knopf »A«, wenn das Smiley leuchtet) um 1 erhöht werden. Dazu musst du den Befehl »ändere PunkteSpielerA um« verwenden.

»ändere auf« und »ändere um«

Bei der Auswahl des Befehls zum Ändern eines Platzhalters musst du ganz genau hinschauen. Der Befehl »ändere Platzhalter auf« setzt den Platzhalter immer auf den gleichen Wert. Der Spieler hätte also immer nur 1 Punkt. Mit dem Befehl »ändere Platzhalter um« erhält der Spieler in jeder Runde einen Punkt dazu. Hier wird also immer 1 Punkt addiert. Du könntest in den Befehl »ändere Platzhalter um« auch eine »-1« schreiben, dann würde dem Spieler ein Punkt abgezogen.

Abb. 6–42 Punktestand von Spieler A wird um 1 erhöht.

6.4.7 Gegenspieler B kommt ins Spiel

Das Programm, das du nun für Spieler A (mit Knopf »A«) gemacht hast, musst du für Spieler B (mit Knopf »B«) nun wiederholen. Du kannst entweder das Programm noch einmal nachbauen oder du duplizierst das Programm und machst dann passende Änderungen. Nicht vergessen: Spieler B braucht einen eigenen Platzhalter für die Punkte. Der Platzhalter »SmileyAn« muss dabei nicht dupliziert werden, da ja beide Spieler auf dasselbe Smiley reagieren. Es hilft dir beim Testen, wenn für Spieler B ein anderer Ton abgespielt wird.

Zeit für einen Test zu zweit. Such dir einen Gegner und testet eure Reaktionsgeschwindigkeit. Nun sammeln beide Spieler eifrig Punkte, aber am Ende wollt ihr natürlich auch sehen, wer öfter den Reaktionstest gewonnen hat und damit Gesamtsieger ist.

6.4.8 Punkte anzeigen

Jetzt sollen die Punkte, die in den Platzhaltern »PunkteSpielerA« und »PunkteSpielerB« gespeichert werden, auch angezeigt werden. Du könntest den Calliope mini so programmieren, dass der Spielstand immer angezeigt wird, wenn du den Calliope schüttelst. Dafür brauchst du als Erstes den Befehl »wenn geschüttelt«.

Abb. 6–43 Befehl »wenn geschüttelt«

Da hinein kannst du nun die Ausgabe der Punkte programmieren. Du könntest zum Beispiel erst die Zeichenfolge »Spieler A« anzeigen lassen, dann seinen Punktestand mit dem Befehl »zeige Nummer« und dem Platzhalter »PunkteSpielerA«.

Abb. 6–44 Punkteausgabe für Spieler A

Die gleichen beiden Befehle kannst du nun auch für Spieler B einfügen. Na, hat es geklappt? Funktioniert dein Spiel? Ja, perfekt, dann fordere deine Familie und Freunde heraus. Testet, wer von euch die besseren Reaktionen hat. Falls das Spiel noch nicht ganz so funktioniert wie gewünscht, schau dir noch einmal die obigen Abschnitte genau an und prüfe, an welcher Stelle vielleicht ein Befehl fehlt.

6.4.9 Erweiterungen

Mit diesem Kapitel hast du eine erste Version des Reaktionsspiels gebaut, das du nun nach eigenen Wünschen erweitern und verschönern kannst. Hier findest du ein paar Ideen, wie du das Spiel noch verbessern könntest:

Bestimmt fallen dir aus den anderen Projekten noch tolle Ideen ein, wie du dein Reaktionsspiel weiter verbessern kannst. Viel Spaß dabei – und bloß nicht zu langsam drücken!

6.5 Farben-Bingo

6.5.1 Was ist denn Farben-Bingo?

Hast du schon einmal Bingo gespielt? Das Farben-Bingo wird fast genauso gespielt, allerdings mit Farben anstelle von Zahlen. Und das Beste ist, dass du die Farben selbst programmieren kannst. Das Farben-Bingo kannst du mit beliebig vielen Freunden spielen. Alles, was ihr braucht, ist ein Calliope mini, Papier und Stifte.

Abb. 6–45 Das fertige Farben-Bingo Spielfeld

6.5.2 Materialien und Werkzeuge

Wie viele? Was Anmerkung
1 Calliope mini
1 Batterie-Pack
2 Batterien
1 Papier 5 cm
8 Stifte div. Farben

Tab. 6–2 Materialien für das Farben-Bingo

6.5.3 Wie funktioniert Bingo?

Beim klassischen Bingo zeichnest du 5 × 5 Kästchen auf ein Blatt Papier und trägst in jedes Kästchen eine Zahl von 1 bis 75 in das Spielfeld ein. Das mittlere Kästchen bleibt dabei leer. Nun wird zufällig eine Zahl zwischen 1 und 75 gezogen und laut vorgelesen. Immer wenn eine dieser Zahlen auf deinem Spielfeld steht, kannst du sie durchstreichen. Der erste Spieler, der alle Zahlen durchgestrichen hat, gewinnt.

Abb. 6–46 Spielfeld Zahlen-Bingo

Das Farben-Bingo ist ein Spiel, das sich wunderbar mit dem Calliope-Board spielen lässt, da bereits ein Knopf und eine mehrfarbige LED auf dem Board sind. Wie beim Zahlen-Bingo zeichnest du ein Kastenfeld auf dein Papier, aber anstelle von Zahlen malst du unterschiedliche Farben in die Felder.

In deinem Bingo-Programm speicherst du beliebig viele Farben und lässt die LED per Knopfdruck zufällig in einer dieser Farben aufleuchten. Hast du die entsprechende Farbe in einem deiner Kästchen vermerkt, kannst du es durchstreichen. Wie beim Zahlen-Bingo gewinnt der erste Spieler, der alle Kästchen durchgestrichen hat. Wie wäre es, wenn wir zunächst mit 6 Farben und 4 Kästchen anfangen?

Nicht genügend Buntstifte?

Falls du gerade keine Buntstifte in allen Farben hast, kannst du einfach den Namen der Farbe in das Kästchenfeld schreiben.

6.5.4 Das Farben-Bingo-Programm

Auch wenn das Spiel leicht zu spielen ist, steckt einiges an Logik und sogar Mathe dahinter. Du solltest also ein bisschen Programmiererfahrung mitbringen. Aber keine Angst, wenn du das Konzept einmal verstanden hast, wiederholt sich das Einfügen der Farben immer wieder. Schauen wir es uns in den nächsten Schritten doch genauer an.

6.5.5 Auslösen des Farbwechsels

Du arbeitest auch in diesem Projekt mit dem PXT-Editor. Der Link hierzu lautet https://mini.pxt.io/

Zu Beginn kannst du dir überlegen, wie eine neue Farbe angezeigt werden soll. Vielleicht, wenn du Knopf A oder B drückst? Oder sogar beide Knöpfe gleichzeitig? In unserem Beispiel leuchtet immer eine neue Bingo-Farbe auf, wenn Knopf A gedrückt wird. Den Baustein »wenn-Knopf-A-gedrückt« findest du unter »Eingabe«.

Abb. 6–47 Auslösen des Farbwechsels

6.5.6 Was passiert zwischen den Farbwechseln?

Immer wenn du Knopf »A« drückst, wird dir im Spiel eine neue Farbe angezeigt. Damit der Farbwechsel besser zu sehen ist, kannst du die LED für eine beliebige Zeit ausschalten, bevor eine neue Bingo-Farbe anzeigt wird. Das kann besonders bei sehr ähnlichen Farben von Vorteil sein. Hierfür baust du die folgenden drei Programmierbefehle aus der Gruppe »Grundlagen« in dein Programm ein:

Abb. 6–48 Block »LED-Farbe« einsetzen

Anschließend setzt du den Grundlagenblock »Rot-Grün-Blau-Weiß« in den Platzhalter »Rot«.

Abb. 6–49 Farben einsetzen

Damit deine mehrfarbige LED nicht mehr leuchtet, setzt du im nächsten Schritt alle Farbwerte auf 0. Per Doppelklick kannst du ein Feld auswählen und den Wert 255 durch 0 ersetzen.

Abb. 6–50 LED-Farben auf 0 setzen

Nun schiebst du den Block »pausiere« aus dem »Grundlagen«-Menü unter den »LED-Farbe«-Block. Weißt du schon, wie lange das Licht aus sein soll? In dem Block steht bereits eine Pause von 100 Millisekunden, also weniger als eine Sekunde. Das ist ganz schön kurz – oder kannst du die Pause etwa doch sehen? Am besten probierst du aus, wie viele Millisekunden deine Pause lang sein soll. In diesem Programm wird die Pause auf 1000 Millisekunden, also eine ganze Sekunde, verlängert.

Abb. 6–51 Pausenlänge bestimmen

6.5.7 Die zufällige Farbausgabe programmieren

Wunderbar, dein Programm kann jetzt per Knopfdruck die mehrfarbige LED ausschalten, damit du den Farbwechsel siehst. Was natürlich noch fehlt, sind die eigentlichen Bingo-Farben und ihre zufällige Ausgabe. Hast du schon eine Idee, wie das programmiert werden kann?

Füge zunächst den Programmierbefehl »ändere-Platzhalter-auf« in dein Programm ein. Du findest ihn im Menü unter Platzhalter.

Abb. 6–52 »Bingo-Farben«-Platzhalter einsetzen

Per Doppelklick auf das Wort »Platzhalter« kannst du es umbenennen. Wie wäre es mit »Bingo-Farbe«? Danach klickst du auf das grüne OK-Feld, um deine Eingabe zu bestätigen.

Abb. 6–53 »Bingo-Farbe«-Platzhalter einsetzen

Anschließend brauchst du einen »Mathe«-Programmierbefehl, denn damit lassen sich Zufälle programmieren. Nimm hierfür den Programmierbefehl »Wähle-eine-zufällige-Zahl-zwischen-1-und-4«. Die Zahl 4 kannst du anschließend in eine beliebige Zahl ändern, je nachdem, mit wie vielen Farben du Bingo spielen möchtest.

Weiter vorne im Buch hast du ja schon gelernt, dass Programmierer mit dem Zählen immer bei 0 anfangen. In diesem Fall steht also 0 für die erste Farbe. In diesem Programmbeispiel wurde die zweite Zahl zu einer 5 geändert. Jetzt kann also mit 6 Farben gespielt werden.

Abb. 6–54 Programmierung für die zufällige Ausgabe

6.5.8 Farben einfügen

Der letzte Schritt des Bingo-Spiels besteht darin, die Farben zu programmieren. Hierfür brauchst du den »Logik«-Block »wenn-dann«. Immer »wenn« der Knopf A gedrückt und zufällig eine Bingo-Farbe zwischen 0 und 5 ausgesucht wird, »dann« wechselt die LED zu der Farbe mit der entsprechend zugeordneten Nummer. Das Einfügen der Logik sieht als Programmierbefehl so aus:

Abb. 6–55 Einfügen der Logik

Dann schiebst du einen zweiten »Logik-Block«, den Vergleich mit dem Gleichheitszeichen, hinter das »wenn« ein. Damit dein Programm die Bingo-Farbe mit der zufälligen Zahl vergleichen kann, ersetzt du die erste 0 mit deinem »Bingo-Farbe«-Platzhalter, den du im Menü »Platzhalter« wiederfindest.

Bitte wundere dich nicht: Da das Programm immer länger wird, ist der obere Teil der Programmierbefehle auf den folgenden Bildern abgeschnitten. Am Ende des Projekts kannst du den ganzen Code noch einmal sehen und ihn mit deinem vergleichen.

Abb. 6–56 Einfügen des Vergleichs

Nun kannst du den »setze-LED-Farbe-auf«-Block einschieben, den du unter »Grundlagen« findest. Dein Programm weiß jetzt, dass der Farbe »Rot« die Zahl 0 zugeordnet ist.

Abb. 6–57 Bingo-Farbe aussuchen

Diesen Schritt wiederholst du, bis jeder Zufallszahl, also 0 bis 5, eine Farbe zugeordnet ist. Mit einem Doppelklick auf die Farbe »Rot« öffnet sich ein Menü, und du kannst zwischen verschiedenen Farben wählen. In dem unteren Bild wurde zum Beispiel die Farbe »Orange« ausgesucht.

Abb. 6–58 Zwischen unterschiedlichen Farben wählen

Vergiss nach der Farbwahl nicht, auch deiner Bingo-Farbe eine neue Zahl zuzuweisen. Um es einfach zu machen, kannst du mit der Zahl 1 anfangen. Am Ende sollte dein Bingo-Programm in etwa so aussehen:

Abb. 6–59 Fertiges »Farben-Bingo«-Programm

Wunderbar, du hast dein erstes eigenes Bingo-Spiel programmiert. Jetzt ran an Stift und Papier, um zu testen, ob alles gut funktioniert. Das Spielfeld kann so aussehen wie in diesem Beispiel:

Abb. 6–60 Viel Spaß beim Spielen

6.5.9 Erweiterung des Programms

Natürlich gibt es noch viele Möglichkeiten, wie du dein Bingo-Programm erweitern kannst. Vor allem, wenn du mit mehr als nur 6 Farben spielen möchtest, sollten sich die Farben besser nicht wiederholen, oder? Vielleicht hast du ja sogar schon eine Idee, wie das programmiert werden kann. Viel Spaß beim Bingo-Spielen!

6.6 Das Wortschatzspiel

6.6.1 Wie viele Wörter kennst du?

Wie viele Wörter kennst du? Genau das kannst du mit dem nächsten Spiel herausfinden. Dafür wirst du in diesem Projekt den Calliope mini als Buchstabengenerator programmieren. Der Calliope mini wird einen Buchstaben generieren und eine Stoppuhr starten. Dann liegt es an dir! Du musst dir Mitspieler suchen und dann könnt ihr den Calliope mini in der Reihe herumgeben und jeweils ein Wort mit diesem Buchstaben am Anfang nennen. Irgendwann ertönt ein Signal und der Countdown ist abgelaufen. Wer nun den Calliope mini in der Hand hält, hat diese Runde verloren. Es heißt also, schnell und kreativ in der Wortwahl sein.

Abb. 6–61 Wie viele Wörter kennst du?

6.6.2 Die Vorbereitung

Für das Projekt solltest du bereits wissen, wie du Zufallszahlen mit dem Calliope erstellst.

6.6.3 Calliope mini unter der Lupe

Für das Spiel verwendest du verschiedene Bestandteile des Calliope-Boards. Du benutzt verschiedene Funktionen, um das Spiel zu starten, und verwendest den kleinen eingebauten Lautsprecher als Start- und Stoppsignal.

6.6.4 Die Programmierung

Die Grundidee des Spieles ist, dass der Calliope mini einen zufälligen Buchstaben auswählt, der auf dem LED-Display angezeigt wird, und einen Countdown mit unterschiedlicher Zeitlänge startet. Du hast bereits gesehen, wie du mit dem Calliope mini zufällig Zahlen erstellen kannst, eine Funktion zum Erstellen von zufälligen Buchstaben gibt es aber nicht. Jedoch als erfahrener Programmierer kannst du einen kleinen Trick verwenden, um die zufälligen Zahlen in Buchstaben zu wandeln. Der Calliope mini versteht ASCII-Code.

ASCII-Code

ASCII ist eine internationale Zeichencodierung, die bereits 1963 von der American Standards Association als Standard etabliert wurde. Der ASCII-Code besteht insgesamt aus 128 verschiedenen Zeichen, die das lateinische Alphabet in Groß- und Kleinbuchstaben, die zehn arabischen Ziffern sowie einige Interpunktionszeichen und Sonderzeichen enthält. Jedem Zeichen ist auch eine normale Zahl zugewiesen, sodass normale Zahlen in Buchstaben umgewandelt werden können. Die folgende Tabelle zeigt dir, wie das aussieht:

Dezimalzahl Schriftzeichen ASCII
65 A
66 B
67 C
68 D
69-90 E-Z

Es lassen sich somit aus den Dezimalzahlen 65 bis 90 normale Großbuchstaben erstellen, die du bereits kennst. Der ASCII-Code enthält auch kleine Buchstaben, die mit den Zahlen 97 (a) bis 122 (z) erstellt werden können.

Eine vollständige Tabelle mit allen ASCII Zeichen findest du auch bei Wikipedia:

https://de.wikipedia.org/wiki/American_Standard_Code_for_Information_Interchange

6.6.5 Der Start

Das Spiel soll immer mit einem Druck auf den Knopf A starten. Wähl dazu aus der Gruppe »Eingabe« den Programmierblock »Wenn Knopf A gedrückt« aus. Als Nächstes musst du einen Platzhalter mit dem Namen »Zufallszahl« erstellen und ihm eine zufällige Zahl zwischen 0 und 25 zuordnen.

Abb. 6–62 Ziehen der Zufallszahl bei Knopfdruck

6.6.6 Das Erstellen der Buchstaben

Nachdem du die Zufallszahl erstellt hast, kannst du sie in einen Buchstaben umwandeln. Für diese Funktion wählst du Block »Text aus ASCII-Code« aus der Gruppe »Mathematik – More« aus. Damit du die Zufallszahl in einen Buchstaben mit Hilfe des ASCII-Code umwandeln kannst, musst du zur Zufallszahl noch 65 addieren. So deckst du den Bereich zwischen 65 und 90 ab (siehe dazu auch die Themeninsel zum ASCII-Code). Mit dem Befehl »zeige Zeichenfolge« aus der Gruppe »Grundlagen« kannst du den Zufallsbuchstaben dann auf dem LED-Display anzeigen lassen.

Abb. 6–63 Umwandlung der Zufallszahl mit Hilfe des ASCII-Codes

6.6.7 Das Startsignal

Nun sind die ersten wichtigen Schritte geschafft. Es wird Zeit, das Spiel auf den Calliope zu übertragen und einen ersten Text zu machen. Übertrage das Programm und teste, ob der Calliope verschiedene Buchstaben erstellt.

Für das Spiel musst du das Programm nun so erweitern, dass ein Ton abgespielt wird, während die Zeit läuft. Dazu kannst du aus dem Menü »Musik« den Block »Klingelton« auswählen und einfügen. Bei der Zahl kannst du verschiedene Varianten ausprobieren. Wenn du zum Beispiel 20 (Hz) eintippst, macht der Calliope mini einen Ton, der sich wie eine sehr schnell laufende Uhr anhört.

Das Spiel wird umso spannender, wenn das Spiel in jeder Runde unterschiedlich lang ist. Auch hier arbeitest du wieder mit der Zufallszahl. Du benötigst also einen neuen Platzhalter, den du »Zeit« nennst, und setzt ihn zu Beginn auf die Zahl 15000. Wusstest du, dass die Zeit in Millisekunden angegeben wird? Daher ist die Zahl so groß. Der Calliope mini soll nun eine Pause machen, die durch den Platzhalter »Zeit« bestimmt wird. Die Pause findest du in den Grundlagen unter »pausiere (ms)«.

Abb. 6–64 Pausieren des Programms

Wenn du nun das Programm überträgst, wirst du feststellen, dass die Zeit, die das Programm pausiert, immer gleich lang ist. Um die Zeitschritte unterschiedlich lang zu gestalten, addierst du zum Platzhalter »Zeit« eine Zufallszahl. Damit die Zufallszahl nicht zu klein ist, multiplizierst du sie mit dem Wert 10000.

Abb. 6–65 Pausieren des Programm mit Hilfe einer zufälligen Zahl

6.6.8 Der letzte Schritt

Du hast es geschafft! Dein Programm hat immer eine unterschiedliche Spielzeit. Weißt du, was jetzt noch fehlt? Genau, es fehlt noch ein Signal, das das Ende der Zeit ankündigt, und ein Neustart des Programms für die nächste Spielrunde. Das Signal für das Ende der Spielzeit kannst du dir mit Hilfe der Programmierbefehle »spiele Note« aus der Gruppe »Musik« holen. Hier kannst du verschiedene Töne ausprobieren oder auch eine kurze Tonfolge komponieren. Zuletzt holst du dir aus der Gruppe »Fortgeschritten – Steuerung« den Programmierbefehl »zurücksetzen«, um das Programm nach jedem Durchgang neu zu starten.

Abb. 6–66 Das komplette Spiel

6.6.9 Idee für den Schulunterricht

Dieses Spiel kann auch gut im Schulunterricht eingesetzt werden. Es gibt den Schülerinnen und Schülern einen Anreiz, verschiedene Wörter zu sagen und kreativ zu sein. Möglich ist es auch, das Spiel zu verändern, sodass der Buchstabe nicht am Anfang, sondern nur innerhalb des Wortes vorkommen muss. Es können auch nur bestimmte Themengebiete zugelassen sein oder man verwendet den Calliope-Buchstabengenerator für das beliebte Spiel Stadt-Land-Fluss.