Link

Lektion 9 - Spiel (Stein,Schere,Papier)

Du hast in den vorherigen Lektionen bereits sehr viel Basiswissen erworben. Es ist nun an der Zeit mit dem Wissen ein erstes kleines Spiel zu programmieren.

Erstelle nun eine elektronische Variante von dem bekannten Spiel “Stein, Papier, Schere”, das oft auch “Schnick, Schnack, Schnuck” genannt wird. Beim Schütteln Deines Micro:Bit soll eine zufällige Zahl zwischen 1 und 3 ermittelt und jeweils das zugehörige Symbol angezeigt werden. Die Zuordnung von der Zahlen zu den Symbolen ist wie folgt:

Zahl 1 - Stein

Zahl 2 - Papier

Zahl 3 - Schere

Anleitung

Wähle zunächst aus dem Eingabe-Block den Block wenn geschüttelt und lösche innerhalb dieses Blocks zunächst das LED-Matrix Display.

Definiere nun eine Variable waffe und ändere den Wert der Variablen auf einen zufälligen Wert zwischen 1 und 3. Nutze dazu den entsprechenden Block aus dem Mathematik-Block.

Jetzt brauchst Du aus dem Logik-Block einen wenn...dann-Block den Du über das kleine Pluszeichen um zwei weitere sonst...wenn-Bedingungen erweiterst. Dieser sollte dann so aussehen:

In den drei Bedingungen musst Du nun über den Vergleich-Logik-Block den Wert der Variablen waffe einzeln mit den Werten 1, 2 und 3 vergleichen.

In der wenn-Bedingung wird also der Wert der Variablen waffe mit dem Wert 1 auf Gleichheit verglichen und falls diese Bedingung zutrifft, das Stein-Symbol angezeigt.

In der ersten sonst wenn-Bedingung wird der Wert der Variablen waffe mit dem Wert 2 auf Gleichheit verglichen und falls diese Bedingung zutrifft, das Papier-Symbol angezeigt.

In der zweiten sonst wenn-Bedingung wird der Wert der Variablen waffe mit dem Wert 3 auf Gleichheit verglichen und falls diese Bedingung zutrifft, das Schere-Symbol angezeigt.

Wenn alles richitg ist, sollte nun beim Schütteln des Micro:Bit zufällig eines der drei Symbole angezeigt werden.

__Let’s play … __

Blocks

So könnte Dein Programm aussehen.

Ergebnis (Simulation)

Javascript-Code

    
let waffe = 0
input.onGesture(Gesture.Shake, function () {
    basic.clearScreen()
    waffe = Math.randomRange(1, 3)
    if (waffe == 1) {
        basic.showIcon(IconNames.Square)
    } else if (waffe == 2) {
        basic.showLeds(`
            . . . . .
            . # # # .
            . # # # .
            . # # # .
            . . . . .
            `)
    } else if (waffe == 3) {
        basic.showIcon(IconNames.Scissors)
    }
})

Erweiterte Version

Zwei Teilnehmerinnen haben eine erweiterte Version des Programms erstellt, bei dem das jeweilige gewählte Symbol auf den Micro:Bit des anderen Spielers per Funk übertragen wird und dann per Smilie angezeigt wird, wer die Runde gewonnen oder verloren hat. Diese Version ist so toll, dass sie hier veröffentlicht werden muss :)

Blocks

Ergebnis (Simulation)

Javascript-Code

    let ssp = 0
radio.onReceivedNumber(function (friendValue) {
    friendValue = friendValue
    if (ssp == 1) {
        if (friendValue == 1) {
            basic.showIcon(IconNames.Asleep)
        } else if (friendValue == 2) {
            basic.showIcon(IconNames.Happy)
        } else {
            basic.showIcon(IconNames.Sad)
        }
    } else if (ssp == 2) {
        if (friendValue == 1) {
            basic.showIcon(IconNames.Sad)
        } else if (friendValue == 2) {
            basic.showIcon(IconNames.Asleep)
        } else {
            basic.showIcon(IconNames.Happy)
        }
    } else {
        if (friendValue == 1) {
            basic.showIcon(IconNames.Happy)
        } else if (friendValue == 2) {
            basic.showIcon(IconNames.Sad)
        } else {
            basic.showIcon(IconNames.Asleep)
        }
    }
})
input.onButtonPressed(Button.AB, function () {
    ssp = Math.randomRange(1, 3)
    if (ssp == 1) {
        basic.showIcon(IconNames.Scissors)
    } else if (ssp == 2) {
        basic.showIcon(IconNames.Square)
    } else {
        basic.showLeds(`
            . . . . .
            . # # # .
            . # # # .
            . # # # .
            . . . . .
            `)
    }
    basic.pause(2000)
    radio.sendNumber(ssp)
})
radio.setGroup(122)

Makecode Projekt

Lektion 9 (Spiel) als Makecode-Projekt