Step 2: Display the bird
In case you’ve been living on another planet for the last few years and have never played flappy bird: the bird itself doesn’t move left of right – only up and down.
We need to keep track of where it is vertically (the y axis). There are only 5 rows of LEDs on the micro:bit screen but in order to make the bird flap up and down more realistically, we’re going to pretend that there are 100 different positions the bird can be on the y axis and then scale this down to display it on the LED grid:
- Write y = 50 at the bottom of your code.
This makes a new variable called y.
A variable stores some data that might change when the program runs. This variable stores the y coordinate (from 0: top to 99:bottom) and we set it to 50 at the start of the game.
- Add the line led_y = int(y / 20) to the bottom of your code.
This makes a new variable called led_y which stores a number from 0 – 4, telling us which row of the LED screen to light up.
y / 20 divides the value stored in the y variable by 20 so that we can scale down the bird coordinate to fit on the LED screen.
The int() function rounds the result of y / 20 down to a whole number (an integer is a whole number with no decimal places)
- Add the line display.set_pixel(1, led_y, 9) to the bottom of your code.
This turns on one pixel which will represent our bird.
There are three parameters for set_pixel: x, y and brightness. We’re setting the x coordinate to 1. The x coordinate for the first column is 0, so our bird will be on the second column.
We’re setting the y coordinate in set_pixel to led_y. led_y will be 2 (y was 50 and we divided that by 20 and rounded down). This means the bird will be on the third row down (the first row is row 0)
The 9 as the last parameter in set_pixel is the brightness. This can be any number from 0 to 9 with 0 meaning completely off and 9 meaning as bright as it’ll go. We’re going to have a bright LED for the bird and dim LEDs for the pipes that you’ve got to try to avoid.
- Your code should now look like this. The new lines are highlighted.
from microbit import * display.scroll("Get ready...") y = 50 led_y = int(y / 20) display.set_pixel(1, led_y, 9)
The code below contains some common mistakes. See if you can find and fix them all.