Flappy bird Micro:bit python tutorial for beginners

Stage 4: Get flappy!

Flappy bird just isn’t flappy bird if the bird doesn’t flap, right?! We’re going to make it so that the bird flaps when you press button A on the micro:bit.

  • Add the highlighted lines to your code:
    # Flappy bird Stage 4: Get flappy!
    # http://blog.withcode.uk/2016/05/flappy-bird-microbit-python-tutorial-for-beginners
    from microbit import *
    
    display.scroll("Get ready...")
    
    y = 50
    speed = 0
    
    # Game loop
    while True:
        display.clear()
        
        # flap if button a was pressed
        if button_a.was_pressed():
            speed = -8
    
        # accelerate down to terminal velocity
        speed += 1
        if speed > 2:
            speed = 2
            
        # move bird, but not off the edge
        y += speed
        if y > 99:
            y = 99
        if y < 0:
            y = 0
            
        # draw bird
        led_y = int(y / 20)
        display.set_pixel(1, led_y, 9)
        
        # wait 20ms
        sleep(20)

    The import part is line 15.  button_a.was_pressed()  checks to see if the button has been pressed since the program started, or since last time you called that function. If the button has been pressed it returns True, otherwise it returns False.

    Setting the speed to -8 if button A has been pressed means that the bird will start to rise up into the air. Gravity will decelerate it and then accelerate it downwards. Magic!

  • We’re also going to start keeping track of the score. Add the line  score = 0 under the line that sets speed to 0 (under line 8).
Debug it with code
Find and fix the errors

You can now make it so that you display the score if you press button B.

  • See if you can find and fix the errors in the code below so that when you press button B, the score appears. At the moment, the score should always be 0.

Line 21 displays the score – there’s no problems with this line: display.scroll("Score:" + str(score))  Notice how you need to convert score (which stores an integer) into a string (using the str() function) before you can add it to the string “Score:”.

 

18 thoughts on “Flappy bird Micro:bit python tutorial for beginners

    • June 10, 2016 at 3:31 pm
      Permalink

      Hi Darryl,

      Thanks – you’re right – sorry about that. I made a mistake when making micro:bit python simulator for the Image.shift_left() function – it ignored the parameter, which your comment has helped me fix: cheers!

      I’ve changed line 71 from i = i.shift_left() to i = i.shift_left(1) which should fix the problem when you test it on a micro:bit.

      Reply
  • Pingback: Molla -robotin prototyyppi | Innokas-verkoston blogi

  • August 25, 2018 at 10:58 am
    Permalink

    I have a name error on line 22. It says name not defined.

    Reply
    • August 25, 2018 at 11:50 am
      Permalink

      Thanks for getting in touch, sorry about the error. Please could you post a link to your code or let me know which example you’re getting the error with?

      Reply
      • August 25, 2018 at 12:26 pm
        Permalink

        I’ve got the code https://create.withcode.uk/python/58B

        It is at the section of
        def make_pipe():
        i = Image("00003:00003:00003:00003:00003")
        gap = random.randint(0,3)
        i.set_pixel(4, gap, 0)
        i.set_pixel(4, gap+1, 0)
        return i

        The micro bit shows 'name error' ' name not defined'
        Hope this helps
        Thanks

        Reply
  • August 25, 2018 at 12:45 pm
    Permalink

    I’ve edited your comment to replace the code with a link if that’s ok? – posting python directly on here gets rid of indentation and swaps some characters like quotation marks. I can’t seem to get the same error as you on the simulator or a micro:bit. Please could you check the link and see if it works for you or if the code matches yours?

    Reply
    • August 26, 2018 at 2:13 am
      Permalink

      I’ve tested the code you post on micro bit and it seems like it’s still having the same error message.
      Line 17 ‘name error’ name ‘random’ is not defined.

      Reply
    • August 26, 2018 at 2:19 am
      Permalink

      Sorry my misunderstanding with your comment, i thought you fixed the issue. Yes the code matches my original code that I’ve got.

      Reply
  • August 26, 2018 at 11:27 am
    Permalink

    Sorry-that’s very frustrating. It runs on a microbit without an error for me. Are you getting the hex file from create.withcode.uk when you run the simulator or are you using a different editor? Could you try clearing your browser cache in case you’ve got an old version of the runtime stored. You’re the second person to say there’s a problem with the random module so I’d like to track down what the issue is, but I can’t replicate the problem on any browser. Thanks for your patience and help.

    Reply
    • August 26, 2018 at 1:04 pm
      Permalink

      Hi, I tried clearing the cache and the same error occurs again. I’m using https://python.microbit.org/v/1 to edit my coding. Normally I would save the file from as a .py file and drag the file into the Micro:Bit folder.

      Hope those information helps

      Reply
      • August 26, 2018 at 7:36 pm
        Permalink

        Thanks – that’s helpful.

        The micro:bit can’t run .py files directly: micro:bits need to be flashed with .hex files which contain both your python code and the micropython runtime which tell the micro:bit how to interpret your code. In the https://python.microbit.org/v/1 editor you’re using, you need to press the download button to create a hex file. That’s the one you then drag into the micro:bit folder. In create.withcode.uk, press ctrl + enter to run your code and you’ll see a link above the simulator that will let you download the hex file.

        Hope that helps.

        Reply

Leave a Reply