Challenge 8: Reaktion

Challenge

In diesem Spiel gilt es seine Reaktionszeit zu beweisen. 2 Spieler treten gegeneinander an. Ein Spieler bedient die „A“-Taste, der andere die „B“-Taste. Es leuchtet nach einer zufälligen Zeitspanne die mittlere LED auf und derjenige, der zuerst auf seine Taste drückt, erhält einen Punkt. Wer zuerst fünf Punkte erreicht, hat gewonnen.

Tipps:

  • Unter LED gibt es den Block „plot“, welcher es einem ermöglicht, Linien zu zeichnen. So lässt sich der Punktestand der Spieler einfach darstellen. Je mehr Punkte der Spieler hat, desto länger wird die Linie. Diese Linie kann jeweils an den Rand des Spielers gezeichnet werden.
  • Ebenso findet man unter LED einen Block „toggle“, welcher eine LED von ihrem jeweiligen Zustand umschaltet. So kann das mittlere Licht angeschaltet und bei Drücken einer Taste wieder ausgeschaltet werden.
  • Damit ein Punkt erzielt werden kann, muss sowohl die mittlere LED leuchten als auch eine der jeweiligen Tasten gedrückt sein.

Makecode

Programmierfunktion

  • Variablen
  • Events abfragen
  • If-Abfrage
  • Endlosschleifen

Spiellogik

Wenn der Micro:bit startet, sollen die Variablen definiert und initialisiert werden.

  • Die Start-Variable auf False, um das Spiel starten zu können.
  • Eine Variable, welche den Spielstatus speichert, also ob das Spiel vorbei ist oder nicht.
  • Jeweils eine Variable, um die Punktzahl des Spielers zu speichern.

Durch das gleichzeitige Drücken von „A“ und „B“ soll das Spiel gestartet werden, aber nur, wenn es nicht bereits gestartet wurde, also nicht auf True steht. Dort wird sie dann auf True gesetzt und angezeigt, welcher Spieler jetzt an der Reihe ist.

Man benötigt mehrere simultan laufende Endlosschleifen. Die Erste davon sorgt für das zufällige Erscheinen des mittleren Punkts. Dazu wird zuerst immer überprüft, ob das spiel gestartet wurde und das Spiel nicht auf gameover steht. Ist dies der Fall wird eine zufällig lange Zeit gewartet, welche aus einem selbst festgelegten Bereich ausgewählt wird, z.B. 2-12 Sekunden. Nachdem diese Zeit gewartet wurde, wird in die mittlere LED angeschaltet.

Die Zweite kümmert sich um die Abfragen welcher Spieler schneller war. Zuerst wird wieder überprüft ob das Spiel überhaupt läuft, denn nur dann soll der Code ausgeführt werden. Danach fragt man ab, ob die mittlere LED leuchtet und die „A“-Taste gedrückt wurde. Ist dies der Fall schaltet man die mittlere LED wieder aus und erhöht die Punktzahl des ersten Spielers um 1. Im Else-If-Fall fragt man dasselbe nur für „B“ ab und erhöht entsprechend die Punktzahl von Spieler zwei.

Das Zeichnen des Punktestands geschieht in der dritten Endlosschleife. Auch hier überprüft man zuerst ob das Spiel läuft und nicht auf gameover steht. Danach kann man jeweils eine Linie plotten lassen. Diese sollen am Rand des jeweiligen Spielers erscheinen. Als Höhe lässt sich die Punktzahl des entsprechenden Spielers nehmen, aber Vorsicht: Die Punktzahl bewegt sich von 1-5, das Koordinatensystem von 0-4, von daher muss man vorher noch um 1 subtrahieren.

Zuletzt braucht man noch eine Endlosschleife, um den Gewinner anzuzeigen und das Spiel zu beenden. Ein letztes Mal fragt man ab, ob das Spiel gestartet wurde. Danach fragt man per If / Else-If ab, ob einer der Spieler fünf Punkte erreicht hat. Ist dies der Fall wird die Variable für den Spielstatus auf True gesetzt, das Spiel ist gameover. Damit man sieht wer gewonnen hat, kann man entsprechend dem gewonnenen Spieler einen Pfeil zeichnen lassen, welcher in dessen Richtung zeigt. Nachdem man kurz abgewartet hat, damit man den Pfeil auch lange genug erkennt, wird das Spiel zurückgesetzt.

Wir wünschen viel Erfolg bei der Lösungsfindung! Wie es geht, zeigen wir morgen früh hier auf dem Blog.

Challenge Master

Ich bin der Challenge Master. Hinter mir verbergen sich die Auszubildenden von Proact Deutschland. Gemeinsam füllen wir diesen Blog mit verschiedenen Projekten, um euch das Coden beizubringen.

 
Kommentare

Noch keine Kommentare vorhanden.

Hinterlassen Sie einen Kommentar