Assignment 10: Final Project
Logistics
Assigned: Tue, Apr 11 Due: Thu, Apr 27
Note: You may not use a late coupon on this assignment. All projects are
due on April 27th by 5:30PM. No exceptions.
1 Introduction
The game we will be making this semester is called Gorrilas. If you have
not played the game before you can find an online version here. Take a
few minutes to play the game and become familiar with how it works
before starting the assignment.
2 Objectives
Everyone must do the following (60 points):
You should draw a game board. You do not need to draw buildings, the
landscape can be flat. Both players need to appear on the screen, you can
use simple shapes for this (we suggest either squares or circles).
You should be able to prompt each player to enter an angle and a
velocity. Using ArgsProcessor for this is acceptable. Once you have
received the angle and velocity, you should make a projectile that moves
across the screen accordingly. You should check to see if your projectile
hits a player, the ground, or if it goes off of the edge of the screen, and
react accordingly.
If a player is hit, you should display a simple message stating which
player won. The game should then restart.
You are required to use at least one interface. Consider the behaviors of
the objects in your game. Do any of your objects
share certain behaviors? If so, that is a good candidate for an interface.
Create the interface and then implement it on each of the objects
accordingly. We first saw interfaces in Module 8, so it may help to
review that material if you get stuck.
In addition to the above, everyone must choose one item from the
following list and include it in your game (10 points):
Allow players to keep playing until one of the players has won a certain
number of times. You should ask the players to enter this number at the
beginning of the game. Display the number of points that each player
currently has on the screen.
Once a player has won, include a simple animation on the game over
screen before restarting.
Include a wind factor and a gravity factor that affects the movement of
the projectile. The wind factor should be randomly
chosen and displayed on each level. The gravity factor should be chosen
by the user at the beginning of the game.
Include a simple explosion animation that will display when the
projectile hits the ground or a player.
Instead of using ArgsProcessor, get user input using StdDraw and
display it on the screen.
Allow the player to use the keyboard to move the gorillas a little bit
before they throw. The amount that the gorrilas can move should be
limited.
Finally, you also need to choose one item from the following list and
include it in your game (30 points):
Randomly generate a city skyline for each round. The projectiles need to
collide with the skyline appropriately.
If you implemented explosions, make the explostions modify the game
board appropriately. That means if you hit the ground or a building, the
explosion should remove part of the ground or building that was hit. If
another projectile lands in the same spot, it should collide with the new
boundary instead of the old (now exploded) boundary.
Add power ups to the game. These power ups should randomly appear
on the screen at random times. If a powerup is hit by a projectile, the
player that threw the projectile should have the powerup applied to
them. You must have at least 3 differ- ent types of powerups to recieve
credit for this option. You should also make each type of power up look
different.
For all of the above options, you should apply any relevant interfaces to
the classes that you create.
3 Notes:
Please design your game before starting to write code. There will be a
studio on April 13th that will ask you to consider the design of your
game. You will not be able to submit your completed project until after
this date.
We are looking for good style. This includes things such as appropriate
documentation (Javadocs) and proper use of spac- ing and indentation.
We are also looking for a design that uses objects effectively. If you put
all of your code into one or two objects, you will lose points. If you
create unnecessary classes (hint: there should only be one class to
represent both players) you will lose points. If you find yourself creating
two classes that are extremely similar to each other, you should consider
how to remove one of those classes.