CV8312-Breakout-P120.TAP
by Danny Ross

This is a version of the classic arcade game - turned on its side! The player
attempts to knock out as many multi-coloured bricks from a wall on the
opposite side of the screen. The author reckons his version of Breakout is
easier to play as you get more time to position the bat in time to hit the
oncoming ball. This version also includes a Hall of Fame feature which can
hold up to five top scores. This is displayed at the end of each game. The
last competitor's score is also displayed - so you know just what to beat
when you are playing against friends.

When the game starts each player gets five balls - these are lost if they
get behind the player's bat. The numbers below the row of bricks correspond
to the score value of each brick. Each time all the bricks are knocked out
the wall rebuilds itself and you get another crack at it - increasing your
score.

The program is divided info three main parts. One to set up the screen,
another to play the game and the third to update the Hall of Fame. Part one
sets up all the functions needed. FN a(x) is used when doing fancy
scoring; ie. 006, 056, etc. FN b(x) returns 1 if x is even; used to see
which part of a brick was hit. FN c(x) returns 1 if x is odd. Part one
also sets up the Hall of Fame and calls a subroutine to set up the user-
defined graphics.

Part two allows you to move your bat and moves the ball according to the
x-y directions in xm and ym. The variable xm changes when the ball hits
the top or bottom of the screen and ym changes when the ball hits a brick,
your bat or the vertical wall on the right.

Part three tells the player if they are in the Hall of Fame and, if so,
asks the player for a name and stores it along with the score. It also asks
if the player wants another game and if so jumps back to line 40.

