Program Overview and Intro

This program is a basic cannon game that functions primarily through file I/O. You load custom environments through the settings menu, then play on them by pressing play from the main menu. You fire projectiles at the boss to win the level. Some levels contain destructible objects that can be destroyed, but don’t have to be to win the level. Each projectile has a blast radius proportionate to the cost to buy it in the shop. Because of this, even if you hit the ground or a destructible object, you may still damage the boss. When testing this game use the cheat codes Hossein, Graham, powder, and $$$ to gain money power and score(all capitalized as you see here). Try to use the super star of death from the shop for maximum fun.


This is a basic overview of the structure of the class files:

A breakdown of the structure of the classes within the program.

Red: Frames
Green: Panels
Blue: Class files that are not visually seen

All Classes have comments at the top explaining what exactly they do. Since pnlPlay is the most complex and important, it has a comment explaining every method and sub class.

The third tier of panels (green) aren’t their own files, but are instead defined and created within their parent file

Description of Classes:

Boss: Contains all information for a specific boss such as Image or health

FraSubmitScore: Separate popup window for score submitting

FraWindow: Frame that creates all of the “Main” panels (Play, Help, High Score, Settings)

Main:  Simply creates the FraWindow

Mario:  Contains all info for mario (X,Y, Image)

Player: Class for managing player high score information

PlotProjectile: Physics engine that models the projectile movements based on wind etc

PnlHelp: Simply displays RTFM (we were to lazy to port our extensive manual over)

PnlHighScores: Manages the high scores (uses the player class)

PnlMainMenu: Panel that contains all the main menu buttons seen in FraWindow (Play, Settings ect)

PnlPlay: Handles the entire Game portion, including creation of the Shop, triggering firing, etc.

PnlPlayButtons: Contains all the buttons, sliders, and some game information, Located to the south in panel play

PnlPlayDrawMovements: Draws all actions that happen within the game. Located in the center of panel play

PnlPlayShop: Shop panel of panel play. Allows buying powder and upgrades

PnlSettings: Allows the user input of user created worlds –DOES NOT handle the information, passes it to panel play

Projectile: Handles all the information for drawing the current projectile (image), and the information such as power

World: Contains all information from a world or .env file. Includes boss(es), Destructable Objects, Backgrounds, wind, mario, etc.

Classes not seen in Graphic:

DestructableObject, a class much like the Boss class, minus a few variables

SoundPlayer, a class of mainly static methods so it you don’t need to create an instance of to use. It plays once or loops sound