Goal
Create a classic video game using the tools you’ve learned throughout the quarter. You are required to implement the MVC model as descibed in lecture. Failing to do so will cause an automatic zero for you final project.
Game Requirements
You will need to implement a simple version of the game Galaga as demonstrated at this website:
http://arcadegamesclassic.net/galaga/index.php?act=Arcadeamp;do=newscore#.WC0Q86PMzOY
As the player advances further in the game, the difficulty level of the game increases (i.e. new bosses appear with different features, and/or change in movements from previous enemies). You do not need to implement all of the features of the original game. You only need to create a simplified version of Galaga to get a passing grade on your final project.
Here are the bare minimum features you will need to implement in order to get at least a B grade:
-
1st - Be able to move the ship from left to right on the bottom of the screen
-
2nd - Display how many ships a player has left before the game is over. You also need to display the score in the window.
-
3rd - Have the blue and red fighters (i.e., the enemies) move in formation across the screen. It’s up to you how much you move the formation of fighters from the left to right. Fighters do not need to move down the screen. Once in formation, the fighters move in sync from left to right. In the actual game, the fighters come in from off screen in a fancy trajectory movement. You DO NOT need to do this. All fighters come in from off-screen to a spot in the formation. No fancy movement to that spot is required.
-
4th - At some point, have fighters come out of the formation and move linearly down the screen. It is ok for fighters to overlap each other as they
come out of formation. This event may happen if you choose to move a fighter at the top of the formation down the screen. In the actual game, the fighters sometimes move with different trajectories down the screen. You are not required to implement that feature.
-
5th - As the fighters are moving out of formation, they should then start firing bullets down the screen. These bullets are not required to be fired at a different angles. You can just have the bullet move in the linearly direction of the fighter. If a bullet or fighter collides with the ship then that should kill the ship and remove one life from the player. You can choose the number of lives for a player. In the actual game, the player has three lives before the game is over.
-
6th - The ship should also be able to fire bullets that is always done in a linear movement upwards. If the bullet hits an enemy then the player should gain a few points. How many points is up to you. Ship must be able to move and fire bullets at the same time.
-
7th - The game should increase in difficulty as the ship destroys its enemies. This feature can be accomplished by making more fighters come out of formation and fire more bullets often. You should have at least 3 “levels” of difficulty.
-
8th - You will need to keep track of the top 10 scores and have the player be able to see the top ten scores on the main screen. Also the top ten scores should persist after the game is closed. This means you’ll need to save the top ten scores to a file and load them up
when the game starts.
-
9th - You will need to make sure you have sprite textures (images) to represent the ships, and enemies.
-
10th - You need to have four screen views: Main Menu, Game Screen, Game Over, and High Scores.
- Main Screen: Gives the option to start the game or view the high scores screen.
- Game Screen: The main screen for the game.
- Game Over: This screen shows the player’s final score and allows them to replay the game or go back to the main menu.
- High Scores: This screen shows the top 10 scores for the game.
-
11th - You must implement the MVC model for your game and make sure to break you game down into parts that are appropriate (i.e., the game should be implemented using good object-oriented design and analysis).
Additional Features to Implement
As described above, you will need to implement the features above along with additional features. Here are some features you can consider implementing:
Fighter Trajectories Movements (Required to get at least an A)
In order to get into the A range, you are required to implement the fancy movement in the game as shown in the actual game.
The fighters should come in on the same fancy movement and leave the formation in a fancy movement. The bullets will also need to be fired at various angles and move along the Trajectory off the screen. Also the movement can be a predefined set of Trajectory movements that can be randomly assigned to a fighter that is about to come into that is about to come into formation.
This feature can be implemented using Beize Curves: http://devmag.org.za/2011/04/05/bzier-curves-a-tutorial/
Animation (Required to get at least an A)
If the ship is hit by a fighter or bullet then add an explosion animation to the ship. If a fighter is hit by a ship bullet then then add an explosion animation to the fighter.
Special weapons
Maybe you might be able to shoot out a bomb at some point that takes down a collection of fighters. Or you might have the fighters shoot out special weapons to the player
Fighters
Various types of fighters. Make the difficulty for the fighters vary. As you saw the game, there is one fighter that stops and shoots down a beam to capture the ship. If the ship is captured then the game is over or the player looses a life.
Sound
Add sound effects. I’ll provide code for loading the sound, shortly.
Shield
Create a shield for the ship. Perhaps the shield changes color as it weakens, and perhaps you need to get a power-up to use the shield for a limited period of time.
Special Levels
Create different levels that include different fighters. You might want to make a level where there’s just one major boss that the space ship has to fight.
Other
There are many possible features you can add to this game. I really want you to have fun and use your imagination to come up with more features to add to the game.
Grading Ranges
- 1st - B Range: You need to implement the bare minimum requirements as described in Game Requirements.
- 2nd - A Range: You need to implement everything in the 1st step along with the fighter trajectories and explosion animation features.
For an A, you should be aiming for a well polished game that is nicely implemented both from the user experience and programming experience (i.e., nicely implementing the MVC model and breaking your game down into appropriate parts, documentation, etc.).
- 3rd - If I feel your game goes well beyond what I deem sufficient for an A then I will add extra credit points to your final-project grade.
Turn-in
1st - Everything that is needed in your _08Final project to run the game
2nd - A README.rmd file that explains the additional features you implemented for the game. Also this an opportunity to relay any additional information to me for grading purposes.
Getting Started Structure
Controller
- Game.java - Have class called Game that acts as the controller for the game. It will hold the simple logic for transitioning from the main menu to the actual game and various other important logic.
Model
(Here are some classes you might want to start thinking about for your models)
- Ship
- Bullet
- RedFighter
- BlueFighter
- Fighter (Base class)
- Sprite (maybe base class for drawing the sprites)
- CollisionDetector - for detecting collisions of the sprites
View
- GameFrame - the JFrame for the application
- GamePanel - the panel where you will do most of your drawing.
I will be posting support code shortly to help you further along.