Skip to content
{{ message }}

Instantly share code, notes, and snippets.

# PaulKinlan/main.py

Created Oct 11, 2016
BBC Micro:bit Arkanoid clone
 from microbit import * # quickly create a level of two rows, with pixels set to 0 hits and 1 hits blocks = [[1 - i for j in range(5) ] for i in range(2)] ball = [2, 3] ball_direction = [1,-1] paddle = [2, 4] previous_game_time = running_time() ball_timing = running_time() game_time = running_time() running = True # Set up the board. def setup_line(line, value): for i in range(5): display.set_pixel(i, line, value) def draw_blocks(): for x in range(5): for y in range(2): display.set_pixel(x, y, blocks[y][x]) def draw_ball(): display.set_pixel(ball, ball, 4) def draw_paddle(): display.set_pixel(paddle, paddle, 5) display.set_pixel(paddle+1, paddle, 5) def move_ball(): global ball ball = next_position() def next_position(): return [ball + ball_direction, ball + ball_direction] def check_ball_collisions(): global running if ball == 4: # Has the ball hit the bottom. Stop the ball and Game over ball_direction = 0 ball_direction = 0 running = False return # Has the ball hit the paddle. if ball == 3 and (ball == paddle or ball == paddle + 1): # 3, so it doesn't embed in the paddle ball_direction = -ball_direction if ball == 3 and (ball == paddle - 1 or ball == paddle + 2): # ball hit odd angle of paddle.. note might reflect it back up one day ball_direction = -ball_direction # Has the ball hit wall (left, right, top). We can still hit something if ball == 0 or ball == 4: ball_direction = -ball_direction if ball == 0: ball_direction = -ball_direction if ball <= 2: # Blocks can only be in top two rows in this game if blocks[ball - 1][ball] > 0: # We hit a block, take a life from the block blocks[ball -1][ball] = blocks[ball -1][ball] -1 # send the ball back down. ball_direction = -ball_direction flipflop = 1 while running: display.clear() # get input if button_a.is_pressed() and paddle >= 1: paddle = paddle - 1 if button_b.is_pressed() and paddle < 3: paddle = paddle + 1 if game_time - ball_timing > 500: flipflop = flipflop ^ 1 display.set_pixel(4, 4, flipflop) move_ball() check_ball_collisions() ball_timing = game_time # draw state draw_blocks() draw_ball() draw_paddle() previous_game_time = game_time game_time = running_time() sleep(100) display.clear() display.scroll('Game Over')

### Bosanac701 commented May 4, 2021

 Can you make this with code blocks
to join this conversation on GitHub. Already have an account? Sign in to comment