Programming with
Data Structures and Algorithms


In this assignment you will use universe to create a simple game. In this game you must pilot a rocket around invading aliens to reach "space" (the top of the screen).

Here is an example of how the game should look:

The Problem

When you are finished, your game should contain the following:

To make the assignment easier, you may want to break it up into simpler stages such as:

  1. Draw a rocket on the screen and have it move from the bottom to the top.
  2. Add UFOs drawn standing still at different starting x and y positions.
  3. Make the Rocket horizontally controllable by keyboard
  4. Make the UFOs move from left to right across the screen.
  5. Add collisions between the UFOs and the walls.
  6. Add collision detection between the UFOs and the rocket and add the flame-burst final scene


Your test cases will be a major part of your grade on this assignment. Remember, many of your functions have graphical output, which makes them difficult to test. This puts an even greater burden on how well you test your non-graphical functions. We expect to see you sustain this burden.


You will want the following clipart images:

Remember, you can insert an image into your Racket code by selecting "Insert Image..." from the "Insert" menu, or by copying and pasting an image into your code. Your definition of an image to use for drawing would look like: (define MY-IMAGE )

You may also find the Racket documentation on big-bang to be useful. You'll want a big-bang that reacts to key-presses, knows when to stop, can draw itself and continually moves the rocket. You'll need to figure out which of the big-bang clauses will allow you to do this.

Remember to think about what you want in your world - and how you'll need to change your world before starting to program, and use the design recipe.

You will also find the Racket documentation on drawing your own images to be useful - especially on how to overlay one image above another in a given position.

For generating random numbers, look at the documentation on random here.

You shouldn't have to copy-paste any code. If you find yourself duplicating code, you make wish to rethink the structure of your world.

Finally, you may want to look through the fully worked-out example of a universe program (Flight Lander) in How to Design Worlds. Note that the text uses an older version of big-bang, so read it for the ideas and most, but not all, of the code.

What should my Racket code look like?

Your Racket should look like Racket, not Java. We expect you to follow the formatting conventions below:

The Teachpack

Again, you'll want to include the teachpack to get access to image processing function. You can find it in the Add Teachpack menu, (Language/Add Teachpack) in the HtDP/2e section, in the center of the screen.

Also, since you'll be using world programming, please include, from the same middle column.

And also remember to uninstall the teachpack while working with

What to turn in: