A retro gaming programme, designed for use on a portable embedded system. Incorporates power saving techniques.

Dependencies:   ConfigFile N5110 PowerControl beep mbed

Committer:
el13drt
Date:
Wed May 06 00:18:31 2015 +0000
Revision:
63:ff9b64b23d26
Parent:
62:827cda7a2663
Child:
64:715fb5a1e58b
pre ninja shift;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
el13drt 62:827cda7a2663 1 /**
el13drt 62:827cda7a2663 2 @file tower.h
el13drt 62:827cda7a2663 3 @brief Revision 1.0.
el13drt 62:827cda7a2663 4 @author Daniel R. Tomlinson
el13drt 62:827cda7a2663 5 @date May 2015
el13drt 13:a1b3a373c5a4 6
el13drt 62:827cda7a2663 7 @brief Header file - Contains Global Variables, Inputs/Outputs and Function prototypes.
el13drt 62:827cda7a2663 8 */
el13drt 62:827cda7a2663 9
el13drt 62:827cda7a2663 10 ///Alters tolerance of Joystick directions
el13drt 13:a1b3a373c5a4 11 #define DIRECTION_TOLERANCE 0.05
el13drt 54:8180eec1656d 12 #include "ConfigFile.h"
el13drt 12:eedda6554615 13
el13drt 62:827cda7a2663 14 /**
el13drt 62:827cda7a2663 15 @namespace lcd
el13drt 63:ff9b64b23d26 16 @brief Object of the N5110 class, allocates pins to the LCD screen
el13drt 63:ff9b64b23d26 17 (VCC, SCE, RST, D/C, MOSI, SCLK, LED).
el13drt 62:827cda7a2663 18 */
el13drt 62:827cda7a2663 19 N5110 lcd(p7,p8,p9,p10,p11,p13,p22);//VCC, SCE, RST, D/C, MOSI, SCLK, LED - assign pins for LCD.
el13drt 55:bb4f6cc196c8 20
el13drt 62:827cda7a2663 21 /**
el13drt 63:ff9b64b23d26 22 @namespace cfg
el13drt 63:ff9b64b23d26 23 @brief Object of the ConfigFile, used to create read/write file path within the Mbeds flash memory.
el13drt 62:827cda7a2663 24 */
el13drt 54:8180eec1656d 25 ConfigFile cfg;
el13drt 24:eb80956e2e95 26
el13drt 62:827cda7a2663 27 /**
el13drt 63:ff9b64b23d26 28 @namespace serial
el13drt 63:ff9b64b23d26 29 @brief Serial port out - Generic protocol used to send and receive data, used for debugging.
el13drt 62:827cda7a2663 30 */
el13drt 54:8180eec1656d 31 Serial serial(USBTX, USBRX);
el13drt 54:8180eec1656d 32
el13drt 62:827cda7a2663 33 /**
el13drt 63:ff9b64b23d26 34 @namespace timerA
el13drt 63:ff9b64b23d26 35 @brief Calls the function, timerExpiredA(); at intervals of 0.1 sec.
el13drt 62:827cda7a2663 36 */
el13drt 35:9f55326c1b0a 37 Ticker timerA;//for buttonA
el13drt 62:827cda7a2663 38
el13drt 62:827cda7a2663 39 /**
el13drt 63:ff9b64b23d26 40 @namespace timerB
el13drt 63:ff9b64b23d26 41 @brief Calls the function, timerExpiredB(); at intervals of 0.1 sec.
el13drt 62:827cda7a2663 42 */
el13drt 35:9f55326c1b0a 43 Ticker timerB;//for buttonB
el13drt 15:ff3eb0091453 44
el13drt 62:827cda7a2663 45 /**
el13drt 63:ff9b64b23d26 46 @namespace pollJoystick
el13drt 63:ff9b64b23d26 47 @brief Calls the function, updateJoystick(); at intervals of 1/10 seconds.
el13drt 62:827cda7a2663 48 */
el13drt 62:827cda7a2663 49 Ticker pollJoystick;
el13drt 62:827cda7a2663 50
el13drt 62:827cda7a2663 51 /**
el13drt 63:ff9b64b23d26 52 @namespace buzzer
el13drt 63:ff9b64b23d26 53 @brief Object of the beep class, allocates a pin to the Piezo buzzer.
el13drt 62:827cda7a2663 54 */
el13drt 13:a1b3a373c5a4 55 Beep buzzer(p21);
el13drt 13:a1b3a373c5a4 56
el13drt 62:827cda7a2663 57 /**
el13drt 62:827cda7a2663 58 @namespace buttonA
el13drt 63:ff9b64b23d26 59 @brief Object of DigitalIn, allocates a pin to push button A.
el13drt 62:827cda7a2663 60 */
el13drt 62:827cda7a2663 61 DigitalIn buttonA(p20);
el13drt 13:a1b3a373c5a4 62
el13drt 62:827cda7a2663 63 /**
el13drt 62:827cda7a2663 64 @namespace buttonB
el13drt 63:ff9b64b23d26 65 @brief Object of DigitalIn, allocates a pin to push button B.
el13drt 62:827cda7a2663 66 */
el13drt 62:827cda7a2663 67 DigitalIn buttonB(p19);
el13drt 62:827cda7a2663 68
el13drt 62:827cda7a2663 69 /**
el13drt 62:827cda7a2663 70 @namespace ledA.
el13drt 63:ff9b64b23d26 71 @brief Object of AnalgOut,allocates a pin to the Action LED.
el13drt 62:827cda7a2663 72 */
el13drt 47:88e3e6c0452d 73 AnalogOut ledA(p18);//action LED
el13drt 62:827cda7a2663 74
el13drt 62:827cda7a2663 75 /**
el13drt 62:827cda7a2663 76 @namespace ledP.
el13drt 63:ff9b64b23d26 77 @brief Object of DigitalOut, allocates a pin to the Power LED.
el13drt 62:827cda7a2663 78 */
el13drt 47:88e3e6c0452d 79 DigitalOut ledP(p24);//Power LED
el13drt 13:a1b3a373c5a4 80
el13drt 62:827cda7a2663 81 /**
el13drt 62:827cda7a2663 82 @namespace joyButton.
el13drt 63:ff9b64b23d26 83 @brief Object of InterruptIn, allocates a pin to the Joy Stick button.
el13drt 62:827cda7a2663 84 */
el13drt 14:c2c969e1c6e8 85 InterruptIn joyButton(p17);//Interrupt for ISR
el13drt 62:827cda7a2663 86
el13drt 62:827cda7a2663 87 /**
el13drt 62:827cda7a2663 88 @namespace xpot.
el13drt 63:ff9b64b23d26 89 @brief Objct of AnalogIn, allocates a pin to xPot.
el13drt 62:827cda7a2663 90 */
el13drt 35:9f55326c1b0a 91 AnalogIn xPot(p15);//left/right
el13drt 62:827cda7a2663 92
el13drt 62:827cda7a2663 93 /**
el13drt 62:827cda7a2663 94 @namespace ypot.
el13drt 63:ff9b64b23d26 95 @brief Objct of AnalogIn, allocates a pin to yPot.
el13drt 62:827cda7a2663 96 */
el13drt 35:9f55326c1b0a 97 AnalogIn yPot(p16);//up/down
el13drt 13:a1b3a373c5a4 98
el13drt 62:827cda7a2663 99 //Globabl Variables
el13drt 12:eedda6554615 100
el13drt 35:9f55326c1b0a 101 //sound FX toggle
el13drt 62:827cda7a2663 102 int FX = 0;/*!< Toggle for Sound FX. */
el13drt 17:242ccf6a8442 103
el13drt 35:9f55326c1b0a 104 //previous Direction
el13drt 40:56ab6d368e9b 105 //stops continuous scrolling on some features
el13drt 62:827cda7a2663 106 int preDirection;/*!< Used to stop continuous scrolling. */
el13drt 34:9dc844bdc776 107
el13drt 35:9f55326c1b0a 108 //timer flags to check state of the buttons
el13drt 62:827cda7a2663 109 int buttonFlagA = 0;/*!< Button flag set for ISR when state of buttonA changes. */
el13drt 62:827cda7a2663 110 int buttonFlagB = 0;/*!< Button flag set for ISR when state of buttonB changes. */
el13drt 15:ff3eb0091453 111
el13drt 60:681bc941b94d 112 //button values for debounce problem
el13drt 60:681bc941b94d 113 int oldButtonA = 0;
el13drt 60:681bc941b94d 114 int newButtonA;
el13drt 60:681bc941b94d 115
el13drt 60:681bc941b94d 116 int oldButtonB = 0;
el13drt 60:681bc941b94d 117 int newButtonB;
el13drt 60:681bc941b94d 118
el13drt 35:9f55326c1b0a 119 //flag for joystick reading
el13drt 62:827cda7a2663 120 int printFlag = 0;/*!< Print flag set for ISR when Joystick is moved. */
el13drt 14:c2c969e1c6e8 121
el13drt 35:9f55326c1b0a 122 //boundary conditions
el13drt 62:827cda7a2663 123 int cells [84][48];/*!< Boundary conditions for cells.*/
el13drt 12:eedda6554615 124
el13drt 35:9f55326c1b0a 125 //real time score
el13drt 62:827cda7a2663 126 int score = 0;/*!< Integer to show and print Scores. */
el13drt 12:eedda6554615 127
el13drt 35:9f55326c1b0a 128 //stored high score variables
el13drt 35:9f55326c1b0a 129 int highScore1;
el13drt 35:9f55326c1b0a 130 int highScore2;
el13drt 35:9f55326c1b0a 131 int highScore3;
el13drt 21:1fbbd8ebb3d9 132
el13drt 35:9f55326c1b0a 133 //global char arrays to store initials/score
el13drt 62:827cda7a2663 134 char player1initials[14] = {"1.AAA.....0"};/*!< Buffer for printing Initials and Top Score 1.*/
el13drt 62:827cda7a2663 135 char player2initials[14] = {"2.BBB.....0"};/*!< Buffer for printing Initials and Top Score 2.*/
el13drt 62:827cda7a2663 136 char player3initials[14] = {"3.CCC.....0"};/*!< Buffer for printing Initials and Top Score 3.*/
el13drt 25:70048c7e02c7 137
el13drt 35:9f55326c1b0a 138 //difficulty variable - hazards fall at 2 pixels per refresh
el13drt 62:827cda7a2663 139 int fall = 2;/*!< Increments hazards each Iteration by the Integer stored. */
el13drt 12:eedda6554615 140
el13drt 35:9f55326c1b0a 141 //global variables for movement (pixelNinja)
el13drt 12:eedda6554615 142 int a1 = 22;
el13drt 12:eedda6554615 143 int a2 = 24;
el13drt 12:eedda6554615 144 int a3 = 23;
el13drt 60:681bc941b94d 145 int a4 = 22;
el13drt 60:681bc941b94d 146 int a5 = 22;
el13drt 60:681bc941b94d 147 int a6 = 24;
el13drt 60:681bc941b94d 148 int a7 = 25;
el13drt 60:681bc941b94d 149 int a8 = 20;
el13drt 60:681bc941b94d 150 int a9 = 20;
el13drt 60:681bc941b94d 151 int a10 = 26;
el13drt 60:681bc941b94d 152 int a11 = 26;
el13drt 60:681bc941b94d 153 int a12 = 26;
el13drt 60:681bc941b94d 154 int a13 = 24;
el13drt 60:681bc941b94d 155 int a14 = 19;
el13drt 60:681bc941b94d 156 int a15 = 20;
el13drt 60:681bc941b94d 157 int a16 = 21;
el13drt 12:eedda6554615 158
el13drt 35:9f55326c1b0a 159 //global variable for hazard X co-ordinates
el13drt 62:827cda7a2663 160 int randX1;/*!< X co-ordinate for Hazard 1. */
el13drt 62:827cda7a2663 161 int randX2;/*!< X co-ordinate for Hazard 2. */
el13drt 62:827cda7a2663 162 int randX3;/*!< X co-ordinate for Hazard 3. */
el13drt 62:827cda7a2663 163 int randX4;/*!< X co-ordinate for Hazard 4. */
el13drt 62:827cda7a2663 164 int randX5;/*!< X co-ordinate for Hazard 5. */
el13drt 62:827cda7a2663 165 int randX6;/*!< X co-ordinate for Hazard 6. */
el13drt 12:eedda6554615 166
el13drt 35:9f55326c1b0a 167 //global variable for hazard Y co-ordinates
el13drt 62:827cda7a2663 168 int randY1 = 1;/*!< Y co-ordinate for Hazard 1. */
el13drt 62:827cda7a2663 169 int randY2 = 1;/*!< Y co-ordinate for Hazard 2. */
el13drt 62:827cda7a2663 170 int randY3 = 1;/*!< Y co-ordinate for Hazard 3. */
el13drt 62:827cda7a2663 171 int randY4 = 1;/*!< Y co-ordinate for Hazard 4. */
el13drt 62:827cda7a2663 172 int randY5 = 1;/*!< Y co-ordinate for Hazard 5. */
el13drt 62:827cda7a2663 173 int randY6 = 1;/*!< Y co-ordinate for Hazard 6. */
el13drt 12:eedda6554615 174
el13drt 35:9f55326c1b0a 175 //integers for changing struct ouput states
el13drt 62:827cda7a2663 176 int state1 = 0;/*!< State number for Output 1.*/
el13drt 62:827cda7a2663 177 int state2 = 0;/*!< State number for output 2.*/
el13drt 62:827cda7a2663 178 int state3 = 0;/*!< State number for output 3.*/
el13drt 35:9f55326c1b0a 179
el13drt 35:9f55326c1b0a 180 //prototypes
el13drt 35:9f55326c1b0a 181 void calibrateJoystick();
el13drt 35:9f55326c1b0a 182 void updateJoystick();
el13drt 35:9f55326c1b0a 183 void timerExpiredA();
el13drt 35:9f55326c1b0a 184 void timerExpiredB();
el13drt 35:9f55326c1b0a 185 void actionButton();
el13drt 35:9f55326c1b0a 186 void randomise();
el13drt 35:9f55326c1b0a 187 void resetGame();
el13drt 35:9f55326c1b0a 188 void startrek();
el13drt 35:9f55326c1b0a 189 void refreshCursor1();
el13drt 35:9f55326c1b0a 190 void refreshCursor2();
el13drt 35:9f55326c1b0a 191 void refreshCursor3();
el13drt 35:9f55326c1b0a 192 void ninjaBoundaries();
el13drt 63:ff9b64b23d26 193
el13drt 63:ff9b64b23d26 194 /**
el13drt 63:ff9b64b23d26 195 */
el13drt 60:681bc941b94d 196 void ninjaLeft();
el13drt 63:ff9b64b23d26 197
el13drt 63:ff9b64b23d26 198 /**
el13drt 63:ff9b64b23d26 199 */
el13drt 60:681bc941b94d 200 void ninjaRight();
el13drt 63:ff9b64b23d26 201
el13drt 63:ff9b64b23d26 202 /**
el13drt 63:ff9b64b23d26 203 */
el13drt 35:9f55326c1b0a 204 void hazardFall();
el13drt 63:ff9b64b23d26 205
el13drt 63:ff9b64b23d26 206 /**
el13drt 63:ff9b64b23d26 207 */
el13drt 51:df3bab1d6926 208 void newScore();
el13drt 63:ff9b64b23d26 209 /**
el13drt 63:ff9b64b23d26 210 */
el13drt 35:9f55326c1b0a 211 void mainMenu();
el13drt 63:ff9b64b23d26 212
el13drt 63:ff9b64b23d26 213 /**
el13drt 63:ff9b64b23d26 214 */
el13drt 35:9f55326c1b0a 215 void exitMenu();
el13drt 63:ff9b64b23d26 216
el13drt 63:ff9b64b23d26 217 /**
el13drt 63:ff9b64b23d26 218 */
el13drt 35:9f55326c1b0a 219 void optionsMenu();
el13drt 63:ff9b64b23d26 220
el13drt 63:ff9b64b23d26 221 /**
el13drt 63:ff9b64b23d26 222 */
el13drt 35:9f55326c1b0a 223 void game();
el13drt 63:ff9b64b23d26 224
el13drt 63:ff9b64b23d26 225 /**
el13drt 63:ff9b64b23d26 226 */
el13drt 35:9f55326c1b0a 227 void difficultyMenu();
el13drt 63:ff9b64b23d26 228
el13drt 63:ff9b64b23d26 229 /**
el13drt 63:ff9b64b23d26 230 */
el13drt 35:9f55326c1b0a 231 void soundFXMenu();
el13drt 63:ff9b64b23d26 232
el13drt 63:ff9b64b23d26 233 /**
el13drt 63:ff9b64b23d26 234 */
el13drt 35:9f55326c1b0a 235 void scores();
el13drt 35:9f55326c1b0a 236
el13drt 62:827cda7a2663 237 /**
el13drt 62:827cda7a2663 238 */
el13drt 35:9f55326c1b0a 239 void drawNinja();
el13drt 62:827cda7a2663 240
el13drt 62:827cda7a2663 241 /**
el13drt 62:827cda7a2663 242 */
el13drt 35:9f55326c1b0a 243 void drawHazards();
el13drt 62:827cda7a2663 244
el13drt 62:827cda7a2663 245 /**
el13drt 62:827cda7a2663 246 */
el13drt 35:9f55326c1b0a 247 void drawWelcome();
el13drt 62:827cda7a2663 248
el13drt 62:827cda7a2663 249 /**
el13drt 62:827cda7a2663 250 */
el13drt 35:9f55326c1b0a 251 void drawBackground();
el13drt 62:827cda7a2663 252
el13drt 62:827cda7a2663 253 /**
el13drt 62:827cda7a2663 254 */
el13drt 35:9f55326c1b0a 255 void drawSoundFXMenu();
el13drt 62:827cda7a2663 256
el13drt 62:827cda7a2663 257 /**
el13drt 62:827cda7a2663 258 */
el13drt 35:9f55326c1b0a 259 void drawDifficultyMenu();
el13drt 62:827cda7a2663 260
el13drt 62:827cda7a2663 261 /**
el13drt 62:827cda7a2663 262 */
el13drt 35:9f55326c1b0a 263 void drawMainMenu();
el13drt 62:827cda7a2663 264
el13drt 62:827cda7a2663 265 /**
el13drt 62:827cda7a2663 266 */
el13drt 35:9f55326c1b0a 267 void drawOptionsMenu();
el13drt 62:827cda7a2663 268
el13drt 62:827cda7a2663 269 /**
el13drt 62:827cda7a2663 270 */
el13drt 35:9f55326c1b0a 271 void drawExitMenu();
el13drt 62:827cda7a2663 272