Modulbild

Game: Schere Stein Papier

lock
Bevorstehend

Programmiere den Klassiker Schere, Stein, Papier auf deinem Micro:bit.

Ziele dieses Moduls
Keine Ziele hinterlegt.

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 dem wahl-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 einen sonst 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!