Lab 10: Arcade Game

        A CS151 Final Project

In this week's lab, we will start working on a final game project of your choosing. The goal of this assignment is to demonstrate independent problem solving and synthesis of old projects and ideas into new ones.  Therefore, your best resource is the collection of games and projects that we have built throughout the semester.  I recommend that you start working on this project today.  As always, let me know if you have any questions or if you need any help.

Tasks

L1. Pick a game as your final project

Check the list of games below, and select a game to implement as your final project.

Game

Possible points

Resources

Asteroids

26

Wikipedia page

Tron (Light Cycles)

26

Wikipedia page

Lunar Lander

27

Wikipedia page

Pole Position

27

Wikipedia page

Arkanoid

27

Wikipedia page

Xevious

28

Wikipedia page

Grand Theft Auto

29

Wikipedia page

Tetris

30

Wikipedia page

Super Mario Bros.

30

Wikipedia page

Every game is expected to be implemented using classes, and inheritance should be used when needed.  Any time you find yourself repeating code in two classes you should consider using inheritance.  You can use any concept that we have covered in class, but you can NOT use lambda functions, list comprehension, or any concept that we did not cover.

L2. Work on a top-down design for your game

top-down design is the decomposition of a system into smaller parts in order to comprehend its compositional sub-systems.  In this step, you are expected to make a list of the classes and objects needed to implement your game. Then, think about how the objects will interact with each other and define the behaviour of each object.

I recommend that you talk to other students who are implementing the same game to brainstorm together.  Feel free to continue to talk to each other after this lab, a mailing list or a chat group is not a bad idea.  Keep in mind that you are encouraged to talk to others, but sharing code or copying from each other are not allowed.

You are expected to implement the main features of the game. If some features of the game are not possible, please confirm that with me through email.

 By the end of this lab, you are expected to draft a list of objects and a list of behaviours for each object.  For example, the Asteroids game, has the following objects:

  1. Asteroid
  2. Spaceship
  3. UFO

The list of behaviour should include (but not limited to) the following:

  1. A spaceship can move and drift in different directions.
  2. Random sized asteroids appear on the screen.
  3. UFOs appear on the screen.
  4. The spaceship can shoot asteroids to gain points.
  5. Asteroids are broken into smaller pieces when shot.
  6. The screen is infinite and the spaceship can portal to the opposite side of the screen if it collides with the edge of the window.
  7. Asteroids move and can collide with the spaceship.
  8. The spaceship has limited fuel.

Extensions

You can make additions to the game other than the original implementation to gain extra extension points on top of the possible points listed in the table above.  As always, extensions that focus on functionality are worth more than extensions that focus on aesthetics.  Make sure you write about your extensions in detail in your project report.  Be creative!