EECS 111: Homeworks 8 & 9

Proposal submission: rolling until Tuesday, June 4 at 11:59 PM

Implementtion due: Tuesday, June 11 at 11:59 PM

This assignment is to be completed with a partner of your choosing.

Purpose

Putting together everything you have learned.

Problem

For this assignment, you will implement a video game that you choose.

Before you start, you must submit a proposal and have it accepted by the course staff; whoever accepts your proposal becomes your mentor for the rest of this project.

For full credit, you need to have your final proposal accepted by Tuesday, June 4th at 11:59 PM, which means you should submit early and often. In order to submit more than once, you will need timely feedback. Our turnaround time will depend on when you submit:

If you submit by… you may expect a response by…
Wed., May 29Thu., May 30
Thu., May 30Fri., May 31
Fri., May 31Sat., June 1
Sat., June 1Mon., June 3
Sun., June 2Tue., June 4

Your proposal must start with a game title and all team members’ names and email addresses. Then must contain two sections:

Every game must also meet three non-functional requirements:

  1. The source code begins with a comment telling the grader how to start your game. It’s easy to start. If necessary, the comment also includes instructions for playing your game.
  2. Rendering is accurate. That is, game play corresponds closely to what the player sees on the screen.
  3. Fundamental constants such as the size of the world and the speed (if things move) are defined near the top of the file. If the grader changes these constants to other values (within reason), your game still functions properly.

Submit your proposal on Canvas for approval. Once your proposal is approved, you may, at your option, expand it into a design document as in Homework 6. This is highly recommended, but it won’t affect your grade directly. (It may affect your grade indirectly by improving the design of your final program.) If you choose to write a design document, you should email it directly to your mentor for feedback.

Here is a sample proposal based on your Homework 6 (so obviously, you can’t do this one again):

Proposal: SPACE SHOOTING GAME

John McCarthy <johnmc@lisp>
Edsger Dijkstra <ewd@algol>

Overview
========

In our game, the player will pilot a space ship defending
Mars from human invaders.  The player’s space ship moves
only in the horizontal direction along the bottom of the
screen, controlled by the player.  The player may also fire
missiles from the space ship.  Enemy space ships appear at the
top of the screen and attempt to reach the bottom.  If a
missile hits an enemy, the enemy is destroyed and the player
scores one point, but if an enemy reaches the bottom of the
screen, the player loses.

Functional Requirements
=======================

1. The user can control the movement of the space ship.
2. The user can control when missiles are released.
3. There is a limit to the number of missiles that may appear on the
   screen at once.
4. New enemies appear in random positions at the top of the screen.
5. Enemies never overlap.
6. Enemies move straight downward.
7. If an enemy and a missile collide, both are removed from the world
   and the score is incremented by 1.
8. If an enemy reaches the bottom of the screen, the game ends and the
   player is notified of the loss.

Here is a another sample proposal:

Proposal: DOT CHOMPING GAME

Overview
========

Barbara Liskov <liskov@clu>
Guy Steele <guylsteelejr@scheme>

In our game, the player controls a large-mouthed, yellow sphere in
navigating a maze full of edible dots (a small number of large dots and
a large number of small dots). The yellow sphere is accompanied in the
maze by a number of phantoms.

The player's goal is to eat all the dots (simply by walking passed them)
without being caught by the phantoms. The phantoms' goal is to catch the
player without being eaten themselves.

When the sphere eats a small dot this increases the player's score.
Ordinarily, if a phantom catches the sphere then the player loses. When
the sphere eats a large dot, however, then the tables are temporarily
turned: The phantoms move away from rather than toward the sphere, and
the sphere may eat any phantoms that it catches.

Functional Requirements
=======================

1. The user can control the movement of the sphere.
2. The sphere and phantoms stay within the walls of the maze and cannot
   cross them.
3. When the sphere passes a small dot, the dot goes away and the score
   increments.
4. When the sphere passes a large dot, the dot goes away and the game
   enters “big-dot mode,” which is indicated visually.
5. The phantoms move toward the sphere when the game is not in big-dot
   mode, and away when it is in big-dot mode.
6. If the sphere meets a phantom while not in big-dot mode, the game
   stops and losing is indicated.
7. If the sphere meets a phantom while in big-dot mode, the phantom is
   eaten and disappears.
8. If all the dots are eaten, the game stops and winning is indicated.

What game you choose is up to you, but if you need an idea, here are a few:

Turn In

Before submitting your design document, join a group on Canvas along with your partner:

  1. Visit the People section on Canvas.
  2. Find the tab for Final Project Groups.
  3. Join a Final Project Groups group together with your partner.

Do not create a group under Student Groups. It will not work for submitting the homework.

After joining a group, submit through Assignmentshw8 as usual.

You will likely need to revise your design document based on feedback and resubmit before the deadline. If you do, you should email your revision(s) directly back to whoever sends you the feedback.

You may find use this Piazza post helpful to search for a teammate.