Rock Paper Scissors V2

Introduction

Cartoon of the Rock Paper Scissors game

Build a “Rock Paper Scissors” game with ADDED BONUS SOUNDS using the micro:bit V2 buzzer!

Step 1

Add an ||input:on shake|| block to run code when you shake the micro:bit.

input.onGesture(Gesture.Shake, function () {

})

Step 2

Make a new variable called hand and place the ||variables:set hand to|| block in the shake event.

A animation that shows how to create a variable

Step 3

Add a ||math:pick random|| block to pick a random number from 1 to 3 and store it in the variable named hand.

let hand = 0;
input.onGesture(Gesture.Shake, function () {
    hand = randint(1, 3)
})

In a later step, each of the possible numbers (1, 2, or 3) is matched to its own picture. The picture is shown on the LEDs when its matching number is picked.

Step 4

Place an ||logic:if|| block under the ||math:pick random|| and check whether hand is equal to 1. Add a ||basic:show leds|| block that shows a picture of a piece of paper. The number 1 is the value for paper.

How to drag an if statement

let hand = 0;
input.onGesture(Gesture.Shake, function () {
    hand = randint(1, 3)
    if (hand == 1) {
        basic.showLeds(`
            # # # # #
            # . . . #
            # . . . #
            # . . . #
            # # # # #
            `)
    }
})

Step 5

Place a ||music:play sound|| block under ||basic:show leds|| and edit it to make it sound like paper.

let hand = 0;
input.onGesture(Gesture.Shake, function () {
    hand = randint(1, 3)
    if (hand == 1) {
        basic.showLeds(`
            # # # # #
            # . . . #
            # . . . #
            # . . . #
            # # # # #
            `)
        music.playSoundEffect(music.createSoundEffect(WaveShape.Noise, 4120, 1266, 255, 148, 500, SoundExpressionEffect.Warble, InterpolationCurve.Curve), SoundExpressionPlayMode.UntilDone)
    }
})

Step 6

Click on the SHAKE button in the simulator. If you try enough times, you should see a picture of paper on the screen.

Shaking a micro:bit simulator

Step 7

Click the (+) button to add an ||logic:else|| section.

Adding an else clause

let hand = 0;
input.onGesture(Gesture.Shake, function () {
    hand = randint(1, 3)
    if (hand == 1) {
        basic.showLeds(`
            # # # # #
            # . . . #
            # . . . #
            # . . . #
            # # # # #
            `)
        music.playSoundEffect(music.createSoundEffect(WaveShape.Noise, 4120, 1266, 255, 148, 500, SoundExpressionEffect.Warble, InterpolationCurve.Curve), SoundExpressionPlayMode.UntilDone)
    } else {

    }
})

Step 8

Add both a ||basic:show leds|| block and a ||music:play sound|| block inside the ||logic:else||. Make a picture for scissors using LEDs and create a scissors sound.

let hand = 0;
input.onGesture(Gesture.Shake, function () {
    hand = randint(1, 3)
    if (hand == 1) {
        basic.showLeds(`
            # # # # #
            # . . . #
            # . . . #
            # . . . #
            # # # # #
            `)
        music.playSoundEffect(music.createSoundEffect(WaveShape.Noise, 4120, 1266, 255, 148, 500, SoundExpressionEffect.Warble, InterpolationCurve.Curve), SoundExpressionPlayMode.UntilDone)
    } else {
        basic.showLeds(`
            # # . . #
            # # . # .
            . . # . .
            # # . # .
            # # . . #
            `)
        music.playSoundEffect(music.createSoundEffect(WaveShape.Sine, 4417, 1, 0, 255, 266, SoundExpressionEffect.Vibrato, InterpolationCurve.Linear), SoundExpressionPlayMode.UntilDone)
    }
})

Step 9

Click the (+) button again to add an ||logic:else if|| section. Now, add a conditional block for ||logic:hand = 2|| to the empty slot in the ||logic:else if||. Since hand can only be 1, 2, or 3, your code is now covering all possible cases!

Adding an else if clause

Step 10

Get one more ||basic:show leds|| block and ||music:play sound|| block and put them inside the ||logic:else if||. Make a picture of a rock in the LEDs and create a rock-like sound.

let hand = 0
input.onGesture(Gesture.Shake, function () {
    hand = randint(1, 3)
    if (hand == 1) {
        basic.showLeds(`
            # # # # #
            # . . . #
            # . . . #
            # . . . #
            # # # # #
            `)
        music.playSoundEffect(music.createSoundEffect(WaveShape.Noise, 4120, 1266, 255, 148, 500, SoundExpressionEffect.Warble, InterpolationCurve.Curve), SoundExpressionPlayMode.UntilDone)
    } else if (hand == 2) {
        basic.showLeds(`
            . . . . .
            . # # # .
            . # # # .
            . # # # .
            . . . . .
            `)
        music.playSoundEffect(music.createSoundEffect(WaveShape.Sine, 4417, 1, 0, 255, 266, SoundExpressionEffect.Vibrato, InterpolationCurve.Linear), SoundExpressionPlayMode.UntilDone)
    } else {
        basic.showLeds(`
            # # . . #
            # # . # .
            . . # . .
            # # . # .
            # # . . #
            `)
        music.playSoundEffect(music.createSoundEffect(WaveShape.Triangle, 1177, 4967, 0, 206, 266, SoundExpressionEffect.Tremolo, InterpolationCurve.Linear), SoundExpressionPlayMode.UntilDone)
    }
})

Step 11

Click on the SHAKE button in the simulator and check to see that each image is showing up.

Shaking a micro:bit simulator

Step 12

If you have a micro:bit V2, click on |Download| and follow the instructions to get the code onto your micro:bit.

Your game is ready! Gather your friends and play Rock Paper Scissors!

A micro:bit in a hand