UNPKG

pxt-microbit

Version:

micro:bit target for Microsoft MakeCode (PXT)

144 lines (110 loc) 5.23 kB
# Pet Hamster ## {Introduction @unplugged} ![Pet hamster banner message](/static/mb/projects/pet-hamster.png) ## {Cyrus's asleep face} Cyrus is a very sleepy hamster. In fact, Cyrus is almost always sleeping. ■ From the ``||basic:Basic||`` category, find ``||basic:show icon [ ]||`` and snap it into your ``||basic:on start||`` container. Set it to show the asleep ``-_-`` face. 💡 In the ``show icon`` dropdown menu options, you can hover to see what each design is called! ```blocks //@highlight basic.showIcon(IconNames.Asleep) ``` ## {Giggly Cyrus} Pressing Cyrus's logo tickles them! ■ From ``||input:Input||``, find the ``||input:on logo [pressed]||`` container and drag it into your workspace. ■ Go to ``||basic:Basic||`` and grab **another** ``||basic:show icon [ ]||``. Snap it into your **empty** ``||input(noclick):on logo [pressed]||`` container. Set the icon (Cyrus's face) to happy ``:)``. ```blocks //@highlight input.onLogoEvent(TouchButtonEvent.Pressed, function () { //@highlight basic.showIcon(IconNames.Happy) }) ``` ## {Tickle sound} ■ From the ``||music:Music||`` category, get a ``||music:play [melody jump up] [in background]||`` and add it to the **bottom** of your ``||input(noclick):on logo [pressed]||`` container. Change the playback mode to ``||music(noclick):[until done]||``. ```blocks input.onLogoEvent(TouchButtonEvent.Pressed, function () { basic.showIcon(IconNames.Happy) //@highlight music._playDefaultBackground(music.builtInPlayableMelody(Melodies.JumpUp), music.PlaybackMode.UntilDone) }) ``` ## {Dizzy Cyrus} Whenever Cyrus is shaken, they get sad 🙁 ■ From ``||input:Input||``, find ``||input:on [shake]||`` and drag it into your workspace. ■ From the ``||basic:Basic||`` category, grab ``||basic:show icon [ ]||`` and snap it into your **new** ``||input(noclick):on [shake]||`` container. Set the icon (Cyrus's face) to sad ``:(``. ```blocks //@highlight input.onGesture(Gesture.Shake, function () { //@highlight basic.showIcon(IconNames.Sad) }) ``` ## {Dizzy sound} ■ From the ``||music:Music||`` category, find the ``||music:play [melody dadadum] [in background]||`` block and add it to the **bottom** of your ``||input(noclick):on [shake]||`` container. Change the playback mode to ``||music(noclick):[until done]||``. ■ Click on the **dropdown** and set it so Cyrus plays a sad sound until done. ```blocks input.onGesture(Gesture.Shake, function () { basic.showIcon(IconNames.Sad) //@highlight music._playDefaultBackground(music.builtInPlayableMelody(Melodies.Wawawawaa), music.PlaybackMode.UntilDone) }) ``` ## {Cyrus's default face pt. 1} Let's ensure that Cyrus will always go back to sleep after being shaken or tickled. ■ Right click the ``||basic(noclick):show icon[-_-]||`` block in your workspace (inside the ``||basic(noclick):on start||`` container) and choose **Duplicate**. ■ Snap your copied block in at the **very bottom** of your ``||input(noclick):on [shake]||`` container. ```blocks input.onGesture(Gesture.Shake, function () { basic.showIcon(IconNames.Sad) music._playDefaultBackground(music.builtInPlayableMelody(Melodies.Wawawawaa), music.PlaybackMode.UntilDone) //@highlight basic.showIcon(IconNames.Asleep) }) input.onLogoEvent(TouchButtonEvent.Pressed, function () { basic.showIcon(IconNames.Happy) music._playDefaultBackground(music.builtInPlayableMelody(Melodies.JumpUp), music.PlaybackMode.UntilDone) }) basic.showIcon(IconNames.Asleep) ``` ## {Cyrus's default face pt. 2} ■ Duplicate the ``||basic(noclick):show icon[-_-]||`` block again and this time snap it in at the **very bottom** of your ``||input(noclick):on logo [pressed]||`` container. ```blocks input.onGesture(Gesture.Shake, function () { basic.showIcon(IconNames.Sad) music._playDefaultBackground(music.builtInPlayableMelody(Melodies.Wawawawaa), music.PlaybackMode.UntilDone) basic.showIcon(IconNames.Asleep) }) input.onLogoEvent(TouchButtonEvent.Pressed, function () { basic.showIcon(IconNames.Happy) music._playDefaultBackground(music.builtInPlayableMelody(Melodies.JumpUp), music.PlaybackMode.UntilDone) //@highlight basic.showIcon(IconNames.Asleep) }) basic.showIcon(IconNames.Asleep) ``` ## {Testing in the simulator} Check out the simulator and make sure your speakers are on 🔊 Play with Cyrus to see how they react 🐹 **Click on the SHAKE button** to shake Cyrus. **Touch the gold logo at the top** to tickle Cyrus. If you have a new @boardname@ (the one with the **shiny gold** logo at the top), download this code and try it out! ```blocks input.onGesture(Gesture.Shake, function () { basic.showIcon(IconNames.Sad) music._playDefaultBackground(music.builtInPlayableMelody(Melodies.Wawawawaa), music.PlaybackMode.UntilDone) basic.showIcon(IconNames.Asleep) }) input.onLogoEvent(TouchButtonEvent.Pressed, function () { basic.showIcon(IconNames.Happy) music._playDefaultBackground(music.builtInPlayableMelody(Melodies.JumpUp), music.PlaybackMode.UntilDone) basic.showIcon(IconNames.Asleep) }) basic.showIcon(IconNames.Asleep) ``` ```validation.global # BlocksExistValidator ``` ```template // ```