Eric Roberts, firstname.lastname@example.org, Stanford University
|Summary||This assignment plays the classic video arcade game of Breakout, in which the player bounces a ball against rows of bricks at the top of the screen to dislodge them one at a time. The name of the game arises from the fact that the ball will eventually break through the line of bricks and bounce off the top wall, clearing a large number of bricks before the ball returns to the paddle.|
|Topics||Basic coding: using the
|Audience||Early CS1. At Stanford, Breakout was the second Java assignment.|
|Difficulty||Surprisingly straightforward, even though the assignment requires a more code than the average assignment at the beginning of CS1. Teaching assistants at Stanford reported that the students just nailed this assignment. It was also used successfully at Grand Valley State University and Alfred State College.|
|Strengths||The real strength of this assignment is that students
are able to create an enjoyable and eminently playable game in the first few weeks of
the term, which serves to increase their excitement about the material.
It also provides students with an opportunity to practice placing graphical objects
on the screen, which prepares them for other assignments involving the
|Weaknesses||This project seems to have worked very well at the
three very different institutions at which it was tried (a research university,
a large public university, and a two-year community college). The only weakness
I can think of is that the animation can be jerky when the program is running
in a browser on a slow machine. This problem does not seem to arise when it is
run as an application.
|Dependencies||Requires the use of the
|Variants||Students were encouraged to extend the assignment in
a variety of ways, including the following:
This assignment plays the classic arcade game of Breakout.
In Breakout, the initial configuration of the world appears as shown on
The colored rectangles in the top part of the screen are bricks, and the
slightly larger rectangle at the bottom is the paddle.
The paddle is in a fixed position in the vertical dimension, but moves
back and forth across the screen along with the mouse until it reaches
the edge of its space.
A complete game consists of three turns.
On each turn, a ball is launched from the center of the window toward
the bottom of the screen at a random angle.
The ball bounces off the paddle and the walls of the world, in
accordance with the physical principle generally expressed as the
angle of incidence equals the angle of reflection (which turns out
to be very easy to implement).
Thus, after two bouncesone off the paddle and one off the right
wallthe ball might have the trajectory shown in the second
(Note that the dotted line is there only to show the balls path
and wont actually appear on the screen.)
As you can see from the second diagram, the ball is about to collide with one of the bricks on the bottom row. When that happens, the ball bounces just as it does on any other collision, but the brick disappears. The third diagram shows what the game looks like after that collision and after the player has moved the paddle to put it in line with the oncoming ball.
The play on a turn continues in this way until one of two conditions occurs:
After all the bricks in a particular column have been cleared, a path will open to the top wall. When this delightful situation occurs, the ball will often bounce back and forth several times between the top wall and the upper line of bricks without the user ever having to worry about hitting the ball with the paddle. This condition is a reward for breaking out and was the inspiration for the name of the game. The diagram on the right shows the situation shortly after the first ball has broken through the wall. That ball will go on to clear several more bricks before it comes back down the open channel.