Rock Paper Scissors V2
{Introduction }

Build a “Rock Paper Scissors” game with ADDED BONUS SOUNDS using the micro:bit V2 buzzer!
{Step 1 }
Use the ||input:on shake|| block in the Workspace 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.

{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.

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.

{Step 7 }
Click the (+) button to add an ||logic:else|| section.

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!

{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.

{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!

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