SPIELBESCHREIBUNG |
|
TEILAUFGABE 1: ZUFÄLLIGE FOLGE MIT ZAHLEN 0 UND 1 ERZEUGEN |
Als erstes schreibst du ein Programm welches eine zufällige Folge mit n Elementen der Zahlen 0 oder 1 erzeugt und diese in einer Liste seg speichert. Teste das Programm mit verschiedenen n und schreibe die Liste mit print(seq) aus. Programm: #from calliope_mini import * from random import randint n = 3 seq = [] repeat n: x = randint(0, 1) seq.append(x) print(seq)
|
TEILAUFGABE 2: ZUFÄLLIGE FOLGE MIT ← UND → ERZEUGEN |
Ergänze das erste Programm wie folgt: Wenn die Zufallszahl 0 ist, wird ein Linkspfeil angezeigtdisplay.show(Image.ARROW_W) display.show(Image.ARROW_E) Die Pfeile werden während 500 ms angezeigt (
sleep(500)) Teste das Programm mit verschiedenen n. |
TEILAUFGABE 3: FOLGE MIT ← UND → MIT BUTTONS ERZEUGEN |
Beim Drücken des linken bzw. rechten Buttons wird in eine zweite Liste seg2 eine 0 oder 1 eingetragen, je nachdem, ob der Spieler den linken oder rechten Button drückt n = 3 seg2 = [] while len(seq2) < n: if button_a.was_pressed(): seq2.append(0) if button_b.was_pressed(): seq2.append(1) sleep(10) len(seq2) gibt Anzahl der Elemente des Liste seq2. Nach der Benutzereingabe vergleichst du die beiden Listen seq und seq2. Sind sie gleich, so ist die Wiedergabe richtig, sonst ist das Spiel beendet. Als Rückmeldung kannst du zum Beispiel die Images YES bzw. NO anzeigen. if seq == seq2:
display.show(Image.YES)
...
|
TEILAUFGABE 4: INTERAKTION DES SPIELERS EINBAUEN |
Im nächsten Entwicklungsschritt fünst du die Teilaufgaben 2 und 3 zusammen. Zuerst wird die Folge seq wie in der Teilaufgaben 2 erzeugt, dann versucht der Spieler mit den Buttons die Folge wiederzugeben. from calliope_mini import * from random import randint n = 3 seq = [] repeat n: x = randint(0, 1) ..... seq2 = [] while len(seq2) < n: if button_a.was_pressed(): .... if seq == seq2:
display.show(Image.YES)
...
|
TEILAUFGABE 5: SCHWIERIGKEITSGRAD STEIGERN |
Bisher hat die gezeigte Sequenz immer noch die fixe Länge 3. Nun erweiterst du das Programm so, dass das Spiel mit n = 2 beginnt und bei einer richtigen Wiedergabe n um 1 erhöht wird. Dazu brauchst du eine alles umfassende repeat-Schleife, die so lange läuft, bis die Wiedergabe fehlerhaft ist, und die Schleife nach Anzeige des Image NO mit break abgebrochen wird. from calliope_mini import * from random import randint n = 2 repeat: #zufallssequenz seq = [] repeat n: x = randint(0, 1) .... #wiedergabe seq2 = [] while len(seq2) < n: if button_a.was_pressed(): ..... #sequenzen vergleichen if seq == seq2: .... n = n + 1 else: display.show(Image.NO) sleep(1000) break |
TEILAUFGABE 6: SPIEL BEENDEN |
Am Schluss kannst du noch die Länge der letzten korrekt wiedergegebenen Folge anzeigen, z. Bsp. mit |
TEILAUFGABE 7: DAS SPIEL NACH EIGENEN IDEEN ERWEITERN |
Du hast sicher viele Ideen, wie du das Spiel individuell gestalten oder verbessern kannst. Anregung: |
#from calliope_mini import * from random import randint n = 3 seq = [] repeat n: x = randint(0, 1) seq.append(x) print(seq)
from calliope_mini import * from random import randint n = 3 seq = [] repeat n: x = randint(0, 1) seq.append(x) if x == 0: display.show(Image.ARROW_W) else: display.show(Image.ARROW_E) sleep(500) display.clear() sleep(500) print(seq)
from calliope_mini import * from random import randint n = 3 seq2 = [] while len(seq2) < n: if button_a.was_pressed(): display.show(Image.ARROW_W) sleep(500) display.clear() seq2.append(0) print(seq2) if button_b.was_pressed(): display.show(Image.ARROW_E) sleep(500) display.clear() seq2.append(1) print(seq2)
from calliope_mini import * from random import randint n = 3 seq = [] repeat n: x = randint(0, 1) seq.append(x) if x == 0: display.show(Image.ARROW_W) else: display.show(Image.ARROW_E) sleep(500) display.clear() sleep(500) print(seq) seq2 = [] while len(seq2) < n: if button_a.was_pressed(): display.show(Image.ARROW_W) sleep(500) display.clear() seq2.append(0) print(seq2) if button_b.was_pressed(): display.show(Image.ARROW_E) sleep(500) display.clear() seq2.append(1) print(seq2) if seq == seq2: display.show(Image.YES) else: display.show(Image.NO)
from calliope_mini import * from random import randint n = 2 repeat: #zufallssequenz seq = [] repeat n: x = randint(0, 1) seq.append(x) if x == 0: display.show(Image.ARROW_W) else: display.show(Image.ARROW_E) sleep(500) display.clear() sleep(500) #print(seq) #wiedergabe seq2 = [] while len(seq2) < n: if button_a.was_pressed(): display.show(Image.ARROW_W) sleep(500) display.clear() seq2.append(0) #print(seq2) if button_b.was_pressed(): display.show(Image.ARROW_E) sleep(500) display.clear() seq2.append(1) #print(seq2) #sequenzen vergleichen if seq == seq2: display.show(Image.YES) sleep(1000) display.clear() n = n + 1 else: display.show(Image.NO) sleep(1000) break print("Anzahl richtig: ", n-1)