BBC micro:bit
Vertical Scroller
Introduction
Here's another vertical scrolling game. It's a different approach to the scrolling race track. This time, the player can only move to one of 3 cells. The game looks a little like this,
The dot in the centre of the bottom row is the player. The player must avoid oncoming dots in the 3 centre columns of the LED matrix.
Programming
Here is the whole example. Things are pretty basic as they stand but the game is engaging enough in this form to want to work more on it.
from microbit import * import random def draw(track, t, x, y): img = Image(track) img.set_pixel(x,y,t * 4 + 1) return img def PlayGame(): # lines of track track_bits = [ "50005:", "53005:", "50305:", "50035:" ] # starting track track = "50005:50005:50005:50005:50005:" # co-ordinates of player character x = 2 y = 4 # time variable for blinking tick = 0 # track pace paws = 75 last = 0 alive = True while alive==True: tt = draw(track,tick,x,y) if button_a.was_pressed() and x!=1: x = x - 1 elif button_b.was_pressed() and x!=3: x = x + 1 # update ticks tick += 1 # show track display.show(tt) # every third tick if tick == 3: # check for collision if tt.get_pixel(x,y-1)!=0: alive = False # reset ticks tick =0 # delete bottom row of track track = track[:-6] # update track if last==0: last = random.randint(0, len(track_bits)-1) else: last = 0 track = track_bits[last] + track # redraw screen tt = draw(track,tick,x,y) display.show(tt) sleep(paws) def main(): while True: if button_a.was_pressed(): PlayGame() sleep(3000) sleep(50) main()
Challenges
- Some tidying up might help. Start with the main function. Display an arrow pointing to the left button and have it blink. This will let the player know how to start. Do some game over images too.
- Next the game needs a score. Work out a way to keep track of game time. Each tick would be fine. Use this to make a score that you can show to the player at the end of the game.
- You can decrease the value of the variable paws to speed up the game. You could do this when the user picks something up or decrease the value by the same amount after every 100 ticks.
- Some sound and light effects might be nice. The large pins are enough to give you a couple of lights and a buzzer. You could do a nice 3-2-1 sequence with an F1 style opening.