Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Diff: main.cpp
- Revision:
- 16:3abc974e8f69
- Parent:
- 14:d6fbbb912425
- Child:
- 17:ac0cb2980f6e
diff -r 9e8d1b6fe81e -r 3abc974e8f69 main.cpp
--- a/main.cpp Wed May 08 20:24:57 2019 +0000
+++ b/main.cpp Wed May 08 21:35:51 2019 +0000
@@ -6,10 +6,12 @@
Name: Kern Fowler
Username: el17kjtf
Student ID Number: 201116686
-Date: 19/02/2019
-Version: 1.2
+Date: 08/05/2019
+Version: 1.4
*/
+
+// Includes all required classes in their respective libraries.
#include "mbed.h"
#include "N5110.h"
#include "Gamepad.h"
@@ -17,33 +19,38 @@
#include "Options.h"
#include "Controls.h"
#include "Instructions.h"
+#include "HighScores.h"
#include "Banana.h"
#include "Barrel.h"
#include "GameEngine.h"
-N5110 lcd(PTC9,PTC0,PTC7,PTD2,PTD1,PTC11);
-Gamepad pad;
-Donkey dky;
-Barrel barrel;
-Banana banana;
-GameEngine eng;
-Options opt;
-Controls cont;
-Instructions instr;
+// Define all objects.
+N5110 lcd(PTC9,PTC0,PTC7,PTD2,PTD1,PTC11); // LCD class object- pins format required only in define.
+Gamepad pad; // Gamepad class obejct.
+Donkey dky; // Donkey Kong class object.
+Barrel barrel; // Barrel class object.
+Banana banana; // Banana class object.
+GameEngine eng; // GameEngine class object.
+Options opt; // Options Menu class object.
+Controls cont; // Controls Menu class object.
+Instructions instr; // Instructions Menu class object.
+HighScores high; // HighScores Menu class object.
+Serial pc(USBTX, USBRX); // Used for testing.
-
-void init();
+// Prototypes
+void init(); //
void print_menu();
void welcome();
void arrow_location();
void arrow_select();
+// Intialise Menu Variables
int fps = 24;
int direction;
int menu_option_pos = 0;
int arrow_pos = 0;
-int menu_arrow[7][7] = { // Arrow pointer used in main menu
+int menu_arrow[7][7] = { // Arrow pointer sprite used in main menu.
{0,0,0,0,0,0,0,},
{0,0,0,0,1,0,0,},
{0,0,0,0,1,1,0,},
@@ -53,7 +60,7 @@
{0,0,0,0,0,0,0,},
};
-int menu_dk_face[36][34] = { // donkey kong face for menu
+int menu_dk_face[36][34] = { // Donkey Kong face sprite used in opening scene.
{ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0 },
{ 0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0 },
{ 0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0 },
@@ -92,41 +99,34 @@
{ 0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0 },
};
-
-
-
-// High Scores-----------------------
-void high_scores_run();
-
-// Main Menu --------------------------------------------------------------
+// Functions
int main() {
- init(); // initialise peripherals
- welcome(); // display welcome message
-
- while(1) { // infinite loop
- arrow_location();
- print_menu(); // this re-prints the menu at the start of every loop
- arrow_select();
+ init(); // Initialises the LCD and Gamepad.
+ welcome(); // Displays welcome screen, has information about the creator and title screen.
+ while(1) { // Main menu loop
+ arrow_location(); // Determines arrow position on screen, will go up and down with joystick commands.
+ print_menu(); // This re-prints the menu at the start of every loop.
+ arrow_select(); // Will select the current menu options when A button pressed.
wait_ms(1.0f/fps);
}
}
-
+
+// Initialises Gamepad and LCD.
void init() {
- // initialise LCD
lcd.init();
- // initialise Gamepad
pad.init();
wait(2.5);
}
+// Moves arrow sprite up or down depending on joystick commands. If reaches the bottom will go back to top position.
void arrow_location() {
direction = pad.get_direction();
- if (direction == N) {
+ if (direction == N) { // Will occur if the joystick is pushed up.
menu_option_pos = menu_option_pos - 1;
// printf("North Pressed");
wait_ms(250);
}
- if (direction == S) {
+ if (direction == S) { // Will occur if the joystick is pushed down.
menu_option_pos = menu_option_pos + 1;
// printf("South Pressed");
wait_ms(250);
@@ -137,36 +137,38 @@
if (menu_option_pos < 0) {
menu_option_pos = 4;
}
- arrow_pos = 8 + (menu_option_pos * 8);
+ arrow_pos = 8 + (menu_option_pos * 8); // Sets and offset due to sprite and font size.
// printf("Option Num = %d", menu_option_pos)
}
+// Runs the current menu option the arrow has selected when A is pressed.
void arrow_select() {
if (pad.check_event(Gamepad::A_PRESSED) == true) {
- if (menu_option_pos == 0) {
+ if (menu_option_pos == 0) { // Start Game option.
// printf("GameEngine");
- eng.gameengine_run(pad, lcd, barrel, banana, dky);
- eng.gameengine_score(pad, lcd, banana);
+ eng.gameengine_run(pad, lcd, barrel, banana, dky); // Runs the main game loop in the GameEngine class.
+ eng.gameengine_score(pad, lcd, banana); // When gameover is reached, runs the end game screen.
}
- if (menu_option_pos == 1) {
+ if (menu_option_pos == 1) { // Controls option.
// printf("Controls");
- cont.controls_run(pad, lcd);
+ cont.controls_run(pad, lcd); // Runs the controls screen loop.
}
- if (menu_option_pos == 2) {
+ if (menu_option_pos == 2) { // Instructions option.
// printf("Instructions");
- instr.instructions_run(pad, lcd);
+ instr.instructions_run(pad, lcd); // Runs the instructions screen loop.
}
- if (menu_option_pos == 3) {
+ if (menu_option_pos == 3) { // Options option.
// printf("Options");
- opt.options_run(pad, lcd);
+ opt.options_run(pad, lcd); // Runs the options screen loop.
}
- if (menu_option_pos == 4) {
+ if (menu_option_pos == 4) { // High Scores option.
// printf("High Scores");
- high_scores_run();
+ high.highscores_run(pad, lcd, banana); // Runs the highscores screen loop.
}
}
}
+// Prints the main menu, with options and the selector arrow.
void print_menu() {
lcd.clear();
lcd.printString("Main Menu",19,0);
@@ -179,52 +181,21 @@
lcd.refresh();
}
+// Prints basic information about the game, and plays title screen.
void welcome() {
lcd.clear();
- lcd.drawSprite(24,0,36,34,(int *)menu_dk_face);
- lcd.printString(" Donkey Kong",0,5);
+ lcd.drawSprite(24,0,36,34,(int *)menu_dk_face); // Donkey Kong sprite for main menu
+ lcd.printString("Donkey Kong",0,5); // Game title.
lcd.refresh();
- wait(1.0); //edit back to longer
+ wait(4.0);
lcd.clear();
- lcd.printString(" Created",0,0);
+ lcd.printString(" Created",0,0); // Information about creator.
lcd.printString(" By",0,1);
lcd.printString(" Kern Fowler",0,3);
lcd.printString(" 201116686",0,4);
lcd.refresh();
- wait(1.0);
+ wait(4.0);
}
-// Donkey -----------
-
-// Barrel -----------
-
-
-
-// Banana -----------
-
-
-
-// Game State--------------------------------------------------------------
-
-
-
-
-// Instructions State------------------------------------------------------
-
-
-// Options State-----------------------------------------------------------
-
-
-// High Score State--------------------------------------------------------
-void high_scores_run() {
- while (pad.check_event(Gamepad::BACK_PRESSED) == false) {
- //printf("High Score State");
- lcd.clear();
- lcd.printString("High Scores",12,0);
- lcd.refresh();
- wait_ms(1.0f/fps);
- }
-}
-