Coding the Lucky Wheel
Feeling lucky? Let’s create a spinning wheel that chooses a random number between 1 and 10!
Duration: ~20 minutes
Step 1
Drag an ||on shake|| block onto the workspace.
input.onGesture(Gesture.Shake, () => {
})
Step 2
Next, create a variable named delay and set it equal to 0. This variable will control the delay at each step of the animation.
let delay = 0
input.onGesture(Gesture.Shake, () => {
delay = 0
})
Step 3
Create another variable named times and drag it below the delay block. This variable will control how long the wheel spins.
let delay = 0
let times = 0
input.onGesture(Gesture.Shake, () => {
delay = 0
times = 0
})
Step 4
Use the ||randomRange|| and ||+|| blocks to set times to a random number between 50 and 59
let delay = 0
let times = 0
input.onGesture(Gesture.Shake, () => {
delay = 0
times = Math.randomRange(0, 10) + 50
})
Step 5
Now add a ||repeat|| block and use the times variable to set how many times it runs.
let delay = 0
let times = 0
input.onGesture(Gesture.Shake, () => {
delay = 0
times = Math.randomRange(0, 10) + 50
for (let i = 0; i < 5; i++) {
}
})
Step 6
Inside the ||repeat|| block, drag a ||photon forward|| block to add the spin effect. Make it move by -1
so that the photon goes clockwise.
let delay = 0
let times = 0
input.onGesture(Gesture.Shake, () => {
delay = 0
times = Math.randomRange(0, 10) + 50
for (let i = 0; i < 5; i++) {
light.photonForward(-1)
}
})
Step 7
Next, use the ||play tone|| and ||randomRange|| blocks to play a random tone at each step.
let delay = 0
let times = 0
input.onGesture(Gesture.Shake, () => {
delay = 0
times = Math.randomRange(0, 10) + 50
for (let i = 0; i < 5; i++) {
light.photonForward(-1)
music.playTone(Math.randomRange(0, 501), music.beat(BeatFraction.Half))
}
})
Step 8
Drag the delay variable into the “beat” section of the ||play tone|| block to control how long the note plays.
let delay = 0
let times = 0
input.onGesture(Gesture.Shake, () => {
delay = 0
times = Math.randomRange(0, 10) + 50
for (let i = 0; i < 5; i++) {
light.photonForward(-1)
music.playTone(Math.randomRange(0, 501), delay)
}
})
Step 9
To make the spinning animation slow down over time, use a ||variable change|| block to change the delay variable by 5.
let delay = 0
let times = 0
input.onGesture(Gesture.Shake, () => {
times = Math.randomRange(0, 10) + 50
delay = 0
for (let i = 0; i < times; i++) {
light.photonForward(-1)
music.playTone(Math.randomRange(0, 501), delay)
delay += 5
}
})
Complete!
Now you have a working lucky number wheel. Have fun!