pxt-calliope/docs/reference/js/lessons/digital-pet/challenges.md
2016-03-25 16:47:20 -07:00

2.8 KiB

digital pet challenges

Coding challenges for the digital pet tutorial.

Before we get started

Complete the following guided tutorial:

At the end of the tutorial, click keep editing. Your code should look like this:

basic.forever(() => {
    if (input.buttonIsPressed("A")) {
        setSleep()
        basic.pause(5000)
    } else {
        setAwake()
    }
})

Challenge 1

Now let's feed the pet! Add an ELSE IF statement that checks if button B is pressed. Click on the ELSE and type IF next to it to get the ELSE IF.

basic.forever(() => {
    if (input.buttonIsPressed("A")) {
        setSleep()
        basic.pause(5000)
    } else if (input.buttonIsPressed("B")) {

    }
    else {
        setAwake()
    }
})

Challenge 2

@video td/videos/digital-pet-2

Now we want to show your eating pet! Let's create a function called set eat that will do create an image. Store that image in a variable and then show it.

export function setEat() {
    let img = images.createImage(`
. # . # .
. . # . .
. . # . .
. # . # .
. . # . .
`)
    img.showImage(0)
}

Once you create the function set eat, call it in the ELSE IF statement that checks if button B is pressed.

basic.forever(() => {
    if (input.buttonIsPressed("A")) {
        setSleep()
        basic.pause(5000)
    } else if (input.buttonIsPressed("B")) {
        setEat()
    }
    else {
        setAwake()
    }
})

Challenge 3

@video td/videos/digital-pet-3

Have your pet tell you when it is going to sleep! Do this inside of the IF statement that checks if button A is pressed before you call the function set sleep.

basic.forever(() => {
    if (input.buttonIsPressed("A")) {
        basic.showString("I am going to sleep.", 150) // ***
        setSleep()
        basic.pause(5000)
    } else if (input.buttonIsPressed("B")) {
        setEat()
    }
    else {
        setAwake()
    }
})

Challenge 4

@video td/videos/digital-pet-4

Now, how about we keep track of how many times our pet eats? Add a global variable called feed that keeps track of how many times you feed your pet. If button B is pressed, increment feed by one. Add a condition on shake to check your total.

feed = 0 // ***
basic.forever(() => {
    if (input.buttonIsPressed("A")) {
        basic.showString("I am going to sleep.", 150)
        setSleep()
        basic.pause(5000)
    } else if (input.buttonIsPressed("B")) {
        feed = feed + 1 // ***
        setEat()
    }
    else {
        setAwake()
    }
})
input.onGesture(Gesture.Shake, () => {
    basic.showNumber(feed, 150) // ***
}) // ***

Challenge 5

Program your pet to say that it is hungry after 60 seconds.

Hint: use input->running time