Aquarium Lab

Make an aquarium simulation.  Include a tiled background of water, the ocean floor of sand and rocks, some animated sea plants, and some animated fish.

Detailed requirements:

  • Automatically detect screen size.
  • Provide multiple (at least 2) backgrounds that the user can select from a configuration screen.
  • The image data must be read from a configuration file (binary or ascii) and not hardcoded in your appliction.
  • Provide a minimum of 4 different, animated (sprite) fish.
    • Each sprite is to have at least 2 different images (parts of the animation) in it.
    • Allow the user to specify the number of active fish using the configuration screen.
    • Fish do not swim backwards.
    • All images for a single sprite object will be in ONE image file (all parts of the animation sequence and all directions).
    • For at least one sprite you must read in the sprite and rotate the sprite in code.
  • Provide a minimum of 1 stationary, animated object (seaweed, clam (opens and closes), etc).
  • Provide at least these buttons: EXIT (if appropriate), ABOUT, SETTINGS. Others as appropriate.
  • The settings page allows you to change things (more or less fish, more or less seaweed, which background, etc). Settings are to use persistent storage and will take effect immediately and be used each time the application is started.
  • EXIT (if appropriate) button prompts for confirmation (something like "are you sure [y/n]") to prevent accidental exit.
  • You will be graded on the proper use of the API but you will not be graded on your artistic abilities (or lack of).

Optional features you might want to add:

  • Bubbles.
  • Fish move at different speeds and with motion other than a straight line.
  • Fish can swim in front of or behind seaweed.
  • Animated bottom dwellers (crab, starfish, etc).
  • Some fish can eat others. Replacement fish automatically appear.


These are just example aquarium simulators, they don't necessarily meet the LAB requirements.

What to turn in

  • Follow the general lab guidelines.
  • Turn in a ZIP file of your entire project.
  • Tell me where you get your images if you uised any (files, sprites, etc).
  • If you had difficulty implementing some features, describe the problems you had and leave in your non-functional code (its better to show that you tried to implement the requirements than to not show any evidence that you tried).