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 29 | Thu., May 30 |
Thu., May 30 | Fri., May 31 |
Fri., May 31 | Sat., June 1 |
Sat., June 1 | Mon., June 3 |
Sun., June 2 | Tue., June 4 |
Your proposal must start with a game title and all team members’ names and email addresses. Then must contain two sections:
- An overview of the game play, describing what the user can do, what the goal of the game is, and what happens in different situations.
- A list of eight functional requirements only 8? If you wish to specify more than the minimum number of requirements you may, but those beyond the first eight will be considered reach features that won’t be counted for grading. , that is, specific things that your game must do, which your grader can test by playing the game. This list will be used as the rubric for grading your game. (See our examples below.)
Every game must also meet three non-functional requirements:
- 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.
- Rendering is accurate. That is, game play corresponds closely to what the player sees on the screen.
- 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:
- The dot chomping game
- The block packing game (like Tetris)
- The amphibian-crossing-a-busy-road game (like Frogger)
- A table tennis game (like Pong)
- An artillary warfare in a hostile environment game (like Scorched Earth)
Turn In
Before submitting your design document, join a group on Canvas along with your partner:
- Visit the People section on Canvas.
- Find the tab for Final Project Groups.
- 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 Assignments → hw8 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.