# Multi Dice

## {Introduction }

Build a multi-player dice game using the radio. The radio blocks let you send wireless messages between a micro:bit and another micro:bit.

In this game, you shake to “throw the dice” and send the result to the other micro:bit. If you receive a result of a dice throw equal or greater than yours, you lose.

## {Dice game}

Let’s start by rebuilding the dice game. If you are unsure about the details, try the dice tutorial again.

``````input.onGesture(Gesture.Shake, function () {
basic.showNumber(randint(1, 6))
})``````

## {Dice variable}

We need to store the result of the dice cast in a variable. A variable is like a place in the memory of the micro:bit where you save information, like numbers.

• Go to the Variables toolbox and click `Make a Variable` to create a new variable. We will call it dice.
• Add a `||variables:set dice to||` block and drag the `||math:pick random||` into it.
• Drag a `||variables:dice||` variable from the Variables toolbox into the `||basic:show number||` block.
``````let dice = 0
input.onGesture(Gesture.Shake, function () {
dice = randint(1, 6)
basic.showNumber(dice)
})``````

## {Send the dice}

Put in a `||radio:send number||` and a `||variables:dice||` to send the value stored in the `||variables:dice||` variable via radio. Make sure to add a `||radio:set group||` to `||basic:on start||` with the group number set to the group you want to use.

``````radio.setGroup(1)
let dice = 0
input.onGesture(Gesture.Shake, function () {
dice = randint(1, 6)
basic.showNumber(dice)
radio.sendNumber(dice)
})``````

## {Receive the dice}

Go get an `||radio:on received number||` event block. This event runs when a radio message from another micro:bit arrives. The `||variables:receivedNumber||` value is the value of the dice in this game.

``````radio.onReceivedNumber(function (receivedNumber) {
})``````

## {Check your cast}

Add a `||logic:if||` block to test if `||variables:receivedNumber||` is greater or equal to `||variables:dice||`. If is, you lost so display a sad face on the screen.

``````let dice = 0;
radio.onReceivedNumber(function (receivedNumber) {
if (receivedNumber >= dice) {
basic.showIcon(IconNames.Sad)
}
})``````

## {Test it!}

Try pressing SHAKE in the simulator and see that a second micro:bit appears. You can play the game on both virtual boards.

If you have more than one micro:bit, download your code onto each one and try playing the game with your friends!

``````let dice = 0
radio.setGroup(1)
input.onGesture(Gesture.Shake, function () {
dice = randint(1, 6)
basic.showNumber(dice)
radio.sendNumber(dice)
})
radio.onReceivedNumber(function (receivedNumber) {
if (receivedNumber >= dice) {
basic.showIcon(IconNames.Sad)
}
})``````
``radio``