# Rock Paper Scissors

## Introduction

Use the accelerometer and the screen to build a **Rock Paper Scissors** game that you can play with your friends!

## Step 1

Add a `||input:on shake||`

block to run code when when you shake the micro:bit.

```
input.onGesture(Gesture.Shake, () => {
})
```

## Step 2

Add a `hand`

variable 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, () => {
hand = Math.randomRange(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`

will mean paper.

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

## Step 5

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

## Step 6

Click the **(+)** button to add an `||logic:else||`

section.

```
let hand = 0;
input.onGesture(Gesture.Shake, () => {
hand = Math.randomRange(1, 3)
if (hand == 1) {
basic.showLeds(`
# # # # #
# . . . #
# . . . #
# . . . #
# # # # #
`)
} else {
}
})
```

## Step 7

Add a `||basic:show leds||`

block inside the `||logic:else||`

. Make a picture of a scissors in the LEDs.

```
let hand = 0;
input.onGesture(Gesture.Shake, () => {
hand = Math.randomRange(1, 3)
if (hand == 1) {
basic.showLeds(`
# # # # #
# . . . #
# . . . #
# . . . #
# # # # #
`)
} else {
basic.showLeds(`
# # . . #
# # . # .
. . # . .
# # . # .
# # . . #
`)
}
})
```

## Step 8

Click the `+`

button again to add an `||logic:else if||`

section. Now, add a conditional block for `||logic:hand = 2||`

to the condition in `||logic:else if||`

. Since `hand`

can only be `1`

, `2`

, or `3`

, your code is covering all possible cases!

## Step 9

Get one more `||basic:show leds||`

block and put it in the `||logic:else if||`

. Make a picture of a rock in the LEDs.

```
let hand = 0;
input.onGesture(Gesture.Shake, () => {
hand = Math.randomRange(1, 3)
if (hand == 1) {
basic.showLeds(`
# # # # #
# . . . #
# . . . #
# . . . #
# # # # #
`)
} else if (hand == 2) {
basic.showLeds(`
. . . . .
. # # # .
. # # # .
. # # # .
. . . . .
`)
} else {
basic.showLeds(`
# # . . #
# # . # .
. . # . .
# # . # .
# # . . #
`)
}
})
```

## Step 10

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

## Step 11

If you have a micro:bit, 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!