Raspberry Pi – einfaches Pibrella Spiel
In den letzten Artikeln habe ich mich näher mit dem Pibrella Board für den Raspberry Pi beschäftigt und am Beispiel eines Adventkranzes gezeigt wie man mit Ausgabegeräten wie den LEDs arbeiten kann. In diesem Artikel zeige ich euch wie ihr mit dein Eingaben umgehen könnt. Dazu entwickeln wir ein simples Spiel welcehes die 3 LEDs, den Button und den Lautsprecher verwendet.
Einfaches Pibrella Spiel
Mit diesem sehr einfachen Pibrella Spiel kann man sehr gut alle Ein- und Ausgabemöglichkeiten des Pibrella Board kreativ nutzen. Gerade für Anfänger ist dieses Beispiel ein netter Einstieg.
Spielregeln
Bevor wir aber mit der Entwicklung beginnen kurz zum Spiel und dessen Regeln:
- es leuchtet zufällig immer eine der LED Lampen eine zufällige Zeit lang
- falls gerade das grüne LED leuchtet, dann sollte man als Spieler so schnell wie möglich den Button klicken
- wurde der Button geklickt, während dessen die grüne LED geleuchtet hat, dann hat man gewonnen. Das wird durch den Success Sound des Lautsprechers und durch leuchten aller 3 LEDs symbolisiert
- wurde der Button geklickt, während dessen ein anderes LED geleuchtet hat, dann hat man verloren. Es ertönt der Error Sound
- das Spiel läuft in einer Endlosschleife, man hat jederzeit dir Möglichkeit weiterzuspielen.
Die Regeln sind damit in kurz aber komplett beschrieben. Auf gehts nun zum Programmieren.
Source Code
Als Programmiersprache wählen wir Python, da es dafür die Pibrella Bibliothek gibt. Dank dieser Bibliothek können wir über einzeilige Codes die LEDs und den Lautsprecher steuern und den Zustand des Buttons abfragen. Wir benötigen folgende Imports:
import random import time import pibrella
random benötigen wir um dem Spiel ein wenig Zufall hinzuzufügen. Schließlich wäre es ja langweilig, wenn immer die selben LEDs in der gleichen Reihenfolge leuchten. Mit der time Bibliothek können wir mit time.sleep eine Wartezeit einfügen die angibt wie lange ein LED leuchtet und der pibrella Import ist für die Ansteuerung des Boards.
Zu Beginn initialisieren wir 2 Arrays:
#initialisieren der arrays leds = [0,1,2] times = [0.1,0.2,0.3,0.4,0.5]
Das ist zum einen das leds Array in dem die Nummern der 3 LED Lichter stehen. Im times Array sind Zeitspannen definiert, wie lange ein solches LED leuchten darf.
Nun kommen wir zur Spielschleife:
#Spielschleife while True: select = random.choice(leds) if select == 0: pibrella.light.green.on() time.sleep(random.choice(times)) pibrella.light.green.off() if select == 1: pibrella.light.yellow.on() time.sleep(random.choice(times)) pibrella.light.yellow.off() if select == 2: pibrella.light.red.on() time.sleep(random.choice(times)) pibrella.light.red.off()
In einer Endlosschleife holen wir uns als erstes zufällig eine Nummer eines LEDs. Je nachdem welche Nummer wir haben schalten wir dieses LED Licht an, warten eine zufällige Zeitspanne und schalten danach das LED wieder ab.
Nun holen wir uns den Status vom Button:
#pruefen ob der button geklickt wirde pressed = pibrella.button.read()
Und prüfen, ob dieser geklickt wurde. In diesem Fall hat der Spieler nun gewonnen oder verloren.
#pruefen ob sieg oder niederlage if pressed: if select == 0: pibrella.buzzer.success() pibrella.lights.on() time.sleep(3) pibrella.buzzer.off() pibrella.lights.off() else: pibrella.buzzer.fail() time.sleep(3) pibrella.buzzer.off()
Sollte also gerade die grüne LED (select == 0) aktiv gewesen sein, dann hat der Spieler gewonnen. Es wird der Success Sound abgespielt, alle 3 LEDs eingeschaltet und 3 Sekunden gewartet. Danach wird der Lautsprecher und die LEDs zurückgesetzt. Im Fall einer anderen LED hat man verloren. Es wird der Fail Sound abgespielt, 3 Sekunden gewartet und danach der Lautsprecher zurückgesetzt.
Das Spiel läuft dann mit der Anzeige der nächsten LED weiter.
Der vollständige Source Code kann hier heruntergeladen werden.
Fazit
Mit diesem einfach Pibrella Spiel habe ich auf spielerische Weise die einzelnen Elemente des Pibrella Board in einem Python Script verwendet. Der Source Code sollte auch Anfängern leicht verständlich sein. Es werden sowohl Ausgabegeräte wie die LEDs und der Lautsprecher verwendet als auch Eingabegeräte wie der Button. Das Skript beinhaltet eine Spielschleife, welche in jedem Spiel vorkommt. Das heißt eine Endlosschleife in denen sich die Anzeige aktualisiert und Benutzerinteraktion abgerufen wird und gegebenenfalls darauf reagiert wird. Der Kern jedes Spiels!
Habt Ihr noch Ideen, wie man dieses Skript erweitern könnte? Oder gar ein eigenes Skript entwickelt?