Game: Schere Stein Papier
Programmiere den Klassiker Schere, Stein, Papier auf deinem Micro:bit.
Original Link: https://makecode.microbit.org/projects/rock-paper-scissors
Nachdem du bereits ein Ausweichspiel gemeistert hast, ist es Zeit für einen weiteren Klassiker: Schere, Stein, Papier! Dieses Modul zeigt dir, wie du ein einfaches, aber unterhaltsames Spiel auf deinem Micro:bit programmierst, das du gegen einen Freund oder den Micro:bit selbst spielen kannst.
Wir werden die Schüttel-Geste des Micro:bit nutzen, um unsere Wahl zu treffen, und die LED-Matrix wird das Ergebnis anzeigen.
Das Spielprinzip: Schütteln und Gewinnen!
Das Prinzip von Schere, Stein, Papier kennst du bestimmt:
-
Stein schlägt Schere
-
Schere schlägt Papier
-
Papier schlägt Stein
Dein Micro:bit wird zufällig eine dieser drei Optionen auswählen, wenn du ihn schüttelst. Du kannst dann entweder gegen den Micro:bit spielen oder ihn als "Schiedsrichter" für ein Spiel mit einem Freund nutzen.
-
Eingabe: Schüttle den Micro:bit.
-
Ausgabe: Die LED-Matrix zeigt ein Symbol für Schere, Stein oder Papier an.
Der Code im Detail: Wie funktioniert das Spiel?
Öffne ein neues Projekt im MakeCode Editor.
1. Die Schüttel-Geste erkennen:
Wir nutzen den eingebauten Beschleunigungssensor des Micro:bit, um zu erkennen, wann er geschüttelt wird.
-
Zieh den Block
wenn geschüttelt
aus der Kategorie "Eingabe" in den Arbeitsbereich. Der gesamte Spielcode wird innerhalb dieses Blocks platziert.
2. Eine zufällige Wahl treffen:
Der Micro:bit muss nun zufällig zwischen Schere, Stein und Papier wählen. Wir können Zahlen verwenden, um diese Optionen darzustellen:
-
0
für Schere -
1
für Stein -
2
für Papier -
Innerhalb des
wenn geschüttelt
-Blocks:-
Erstelle eine neue Variable namens
wahl
. -
Setze den Block
wahl auf ... setzen
(aus "Variablen"). -
Füge den Block
wähle zufällige Zahl von 0 bis 2
aus "Mathematik" hinzu und verbinde ihn mit demwahl
-Block.
-
3. Die Wahl anzeigen (mit Bedingungen):
Jetzt müssen wir je nach Wert der Variable wahl
das entsprechende Symbol auf der LED-Matrix anzeigen.
-
Füge einen
wenn ... dann ... sonst wenn ... sonst
-Block aus "Logik" hinzu. -
Erste Bedingung:
-
Setze die Bedingung auf
wahl = 0
(aus "Logik" -> "Vergleichsoperatoren" und "Variablen"). -
Innerhalb dieses Blocks: Füge den Block
zeige Symbol
aus "Grundlagen" hinzu und wähle das Schere-Symbol aus.
-
-
Zweite Bedingung (
sonst wenn
):-
Klicke auf das Plus-Symbol am
wenn ... dann ... sonst wenn ... sonst
-Block, um einensonst wenn
-Teil hinzuzufügen. -
Setze die Bedingung auf
wahl = 1
. -
Innerhalb dieses Blocks: Füge den Block
zeige Symbol
hinzu und wähle das Stein-Symbol aus.
-
-
Letzter Teil (
sonst
):-
Hier muss keine Bedingung mehr geprüft werden, da nur noch
wahl = 2
übrig bleibt. -
Innerhalb dieses Blocks: Füge den Block
zeige Symbol
hinzu und wähle das Papier-Symbol aus.
-
So sieht der Code aus (JavaScript-Ansicht):
// Variable für die zufällige Wahl
let wahl = 0
// Wenn der Micro:bit geschüttelt wird
input.onButtonPressed(Button.A, function () {
if (x > 0) {
led.unplot(x, y)
x -= 1
led.plot(x, y)
}
})
input.onButtonPressed(Button.B, function () {
if (x < 4) {
led.unplot(x, y)
x += 1
led.plot(x, y)
}
})
let score = 0
let y = 4
let x = 2
let obstacles: Obstacle[] = []
class Obstacle {
x: number
y: number
constructor(x: number, y: number) {
this.x = x
this.y = y
}
}
loops.everyInterval(200, function () {
score += 1
basic.clearScreen()
for (let i = obstacles.length - 1; i >= 0; i--){
let obstacle = obstacles[i]
obstacle.y = obstacle.y + 1;
if (obstacle.x == x && obstacle.y == y){
basic.showNumber(score)
score = 0
}
if (obstacle.y > 4){
obstacles.removeAt(i)
}
}
let ox = randint(0, 5)
const new_obstacle = new Obstacle(ox, 0)
obstacles.push(new_obstacle)
for (let obstacle2 of obstacles) {
led.plotBrightness(obstacle2.x, obstacle2.y, 20)
}
led.plotBrightness(x, y, 255)
})
input.onGesture(Gesture.Shake, function () {
wahl = randint(0, 2) // Wählt 0, 1 oder 2 zufällig
if (wahl == 0) {
basic.showIcon(IconNames.Scissors) // Schere
} else if (wahl == 1) {
basic.showIcon(IconNames.Square) // Stein (als Quadrat)
} else {
basic.showIcon(IconNames.SmallSquare) // Papier (als kleines Quadrat oder leeres Feld)
}
})
Dein vollständiger Code zum Kopieren:
Kopiere diesen Code direkt in den JavaScript-Editor von MakeCode (klicke auf den "JavaScript"-Button oben im Editor, um die Ansicht zu wechseln).
// Initialisiere die Variable für die zufällige Wahl
let wahl = 0
// Wenn der Micro:bit geschüttelt wird
input.onGesture(Gesture.Shake, function () {
wahl = randint(0, 2) // Wählt eine zufällige Zahl: 0, 1 oder 2
// Zeige das entsprechende Symbol basierend auf der Wahl
if (wahl == 0) {
basic.showIcon(IconNames.Scissors) // 0: Schere
} else if (wahl == 1) {
basic.showIcon(IconNames.Square) // 1: Stein (ein Quadrat-Symbol)
} else {
basic.showIcon(IconNames.SmallSquare) // 2: Papier (ein kleineres Quadrat-Symbol)
}
})
Experimentiere und Erweitere dein Spiel!
-
Eigene Symbole: Erstelle deine eigenen Symbole für Schere, Stein und Papier mit dem
zeige LEDs
-Block. -
Spieler gegen Spieler: Lass zwei Micro:bits gegeneinander spielen, indem sie ihre Wahl per Radio senden und dann das Ergebnis vergleichen.
-
Punktestand: Erweitere das Spiel, um einen Punktestand für gewonnene Runden zu führen.
-
Soundeffekte: Füge kurze Töne hinzu, wenn eine Wahl getroffen wird oder ein Gewinner feststeht.
Viel Spass beim Spielen und Programmieren von Schere, Stein, Papier auf deinem Micro:bit!