# Flappy bird

``````# Flappy bird for a micro:bit in python
# http://blog.withcode.uk/2016/05/flappy-bird-microbit-python-tutorial-for-beginners
from microbit import *
import random

# Game constants
DELAY = 20                      # ms between each frame
FRAMES_PER_WALL_SHIFT = 20      # number of frames between each time a wall moves a pixel to the left
FRAMES_PER_NEW_WALL = 100       # number of frames between each new wall
FRAMES_PER_SCORE = 50           # number of frames between score rising by 1

# Global variables
y = 50
speed = 0
score = 0
frame = 0

# Make an image that represents a pipe to dodge
def make_pipe():
i = Image("00003:00003:00003:00003:00003")
gap = random.randint(0,3)   # random wall position
i.set_pixel(4, gap, 0)      # blast a hole in the pipe
i.set_pixel(4, gap+1, 0)
return i

# create first pipe
i = make_pipe()

# Game loop
while True:
frame += 1

# show pipe
display.show(i)

# flap if button a was pressed
if button_a.was_pressed():
speed = -8

# show score if button b was pressed
if button_b.was_pressed():
display.scroll("Score:" + str(score))

# 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)

# check for collision
if i.get_pixel(1, led_y) != 0:
sleep(500)
display.scroll("Score: " + str(score))
break

# move wall left
if(frame % FRAMES_PER_WALL_SHIFT == 0):
i = i.shift_left(1)

# create new wall
if(frame % FRAMES_PER_NEW_WALL == 0):
i = make_pipe()

# increase score
if(frame % FRAMES_PER_SCORE == 0):
score += 1

# wait 20ms
sleep(20)
``````

Source: https://blog.withcode.uk/2016/05/flappy-bird-microbit-python-tutorial-for-beginners/9/