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:
Sun May 10 19:29:46 2015 +0000
Revision:
76:c11cb774bd27
Parent:
74:d76be537bafd
Child:
78:e2fc547c6b99
post game flag;

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 64:715fb5a1e58b 21 LocalFileSystem local("local");
el13drt 64:715fb5a1e58b 22
el13drt 62:827cda7a2663 23 /**
el13drt 63:ff9b64b23d26 24 @namespace cfg
el13drt 63:ff9b64b23d26 25 @brief Object of the ConfigFile, used to create read/write file path within the Mbeds flash memory.
el13drt 62:827cda7a2663 26 */
el13drt 54:8180eec1656d 27 ConfigFile cfg;
el13drt 24:eb80956e2e95 28
el13drt 62:827cda7a2663 29 /**
el13drt 63:ff9b64b23d26 30 @namespace serial
el13drt 63:ff9b64b23d26 31 @brief Serial port out - Generic protocol used to send and receive data, used for debugging.
el13drt 62:827cda7a2663 32 */
el13drt 54:8180eec1656d 33 Serial serial(USBTX, USBRX);
el13drt 54:8180eec1656d 34
el13drt 62:827cda7a2663 35 /**
el13drt 76:c11cb774bd27 36 @namespace deBounce
el13drt 76:c11cb774bd27 37 @brief Creates a minimum time span of before buttonA is acknowledged; at intervals of 0.1 sec.
el13drt 76:c11cb774bd27 38 */
el13drt 76:c11cb774bd27 39 Timer deBounce1;//for buttonA
el13drt 76:c11cb774bd27 40
el13drt 76:c11cb774bd27 41 /**
el13drt 76:c11cb774bd27 42 @namespace deBounce
el13drt 76:c11cb774bd27 43 @brief Creates a minimum time span of before buttonB is acknowledged; at intervals of 0.1 sec.
el13drt 76:c11cb774bd27 44 */
el13drt 76:c11cb774bd27 45 Timer deBounce2;//for buttonB
el13drt 76:c11cb774bd27 46
el13drt 76:c11cb774bd27 47 /**
el13drt 76:c11cb774bd27 48 @namespace timerGame
el13drt 76:c11cb774bd27 49 @brief Creates a minimum time span before the game loops; at intervals of 0.1 sec.
el13drt 76:c11cb774bd27 50 */
el13drt 76:c11cb774bd27 51 Ticker timerGame;//for game
el13drt 76:c11cb774bd27 52
el13drt 76:c11cb774bd27 53 /**
el13drt 63:ff9b64b23d26 54 @namespace timerA
el13drt 63:ff9b64b23d26 55 @brief Calls the function, timerExpiredA(); at intervals of 0.1 sec.
el13drt 62:827cda7a2663 56 */
el13drt 35:9f55326c1b0a 57 Ticker timerA;//for buttonA
el13drt 62:827cda7a2663 58
el13drt 62:827cda7a2663 59 /**
el13drt 63:ff9b64b23d26 60 @namespace timerB
el13drt 63:ff9b64b23d26 61 @brief Calls the function, timerExpiredB(); at intervals of 0.1 sec.
el13drt 62:827cda7a2663 62 */
el13drt 35:9f55326c1b0a 63 Ticker timerB;//for buttonB
el13drt 15:ff3eb0091453 64
el13drt 62:827cda7a2663 65 /**
el13drt 63:ff9b64b23d26 66 @namespace pollJoystick
el13drt 63:ff9b64b23d26 67 @brief Calls the function, updateJoystick(); at intervals of 1/10 seconds.
el13drt 62:827cda7a2663 68 */
el13drt 62:827cda7a2663 69 Ticker pollJoystick;
el13drt 62:827cda7a2663 70
el13drt 62:827cda7a2663 71 /**
el13drt 65:c5dad703f752 72 @namespace standby
el13drt 66:d5174aa5839d 73 @brief Calls the function, screenOff(); at intervals of 60 seconds.
el13drt 65:c5dad703f752 74 */
el13drt 65:c5dad703f752 75 Ticker standby;
el13drt 65:c5dad703f752 76
el13drt 65:c5dad703f752 77 /**
el13drt 63:ff9b64b23d26 78 @namespace buzzer
el13drt 63:ff9b64b23d26 79 @brief Object of the beep class, allocates a pin to the Piezo buzzer.
el13drt 62:827cda7a2663 80 */
el13drt 13:a1b3a373c5a4 81 Beep buzzer(p21);
el13drt 13:a1b3a373c5a4 82
el13drt 62:827cda7a2663 83 /**
el13drt 62:827cda7a2663 84 @namespace buttonA
el13drt 74:d76be537bafd 85 @brief DigitalIn, allocates a pin to push button A.
el13drt 62:827cda7a2663 86 */
el13drt 62:827cda7a2663 87 DigitalIn buttonA(p20);
el13drt 13:a1b3a373c5a4 88
el13drt 62:827cda7a2663 89 /**
el13drt 62:827cda7a2663 90 @namespace buttonB
el13drt 74:d76be537bafd 91 @brief DigitalIn, allocates a pin to push button B.
el13drt 62:827cda7a2663 92 */
el13drt 62:827cda7a2663 93 DigitalIn buttonB(p19);
el13drt 62:827cda7a2663 94
el13drt 62:827cda7a2663 95 /**
el13drt 62:827cda7a2663 96 @namespace ledA.
el13drt 74:d76be537bafd 97 @brief AnalgOut,allocates a pin to the Action LED.
el13drt 62:827cda7a2663 98 */
el13drt 47:88e3e6c0452d 99 AnalogOut ledA(p18);//action LED
el13drt 62:827cda7a2663 100
el13drt 62:827cda7a2663 101 /**
el13drt 62:827cda7a2663 102 @namespace ledP.
el13drt 63:ff9b64b23d26 103 @brief Object of DigitalOut, allocates a pin to the Power LED.
el13drt 62:827cda7a2663 104 */
el13drt 47:88e3e6c0452d 105 DigitalOut ledP(p24);//Power LED
el13drt 13:a1b3a373c5a4 106
el13drt 62:827cda7a2663 107 /**
el13drt 62:827cda7a2663 108 @namespace joyButton.
el13drt 63:ff9b64b23d26 109 @brief Object of InterruptIn, allocates a pin to the Joy Stick button.
el13drt 62:827cda7a2663 110 */
el13drt 14:c2c969e1c6e8 111 InterruptIn joyButton(p17);//Interrupt for ISR
el13drt 62:827cda7a2663 112
el13drt 62:827cda7a2663 113 /**
el13drt 62:827cda7a2663 114 @namespace xpot.
el13drt 63:ff9b64b23d26 115 @brief Objct of AnalogIn, allocates a pin to xPot.
el13drt 62:827cda7a2663 116 */
el13drt 35:9f55326c1b0a 117 AnalogIn xPot(p15);//left/right
el13drt 62:827cda7a2663 118
el13drt 62:827cda7a2663 119 /**
el13drt 62:827cda7a2663 120 @namespace ypot.
el13drt 63:ff9b64b23d26 121 @brief Objct of AnalogIn, allocates a pin to yPot.
el13drt 62:827cda7a2663 122 */
el13drt 35:9f55326c1b0a 123 AnalogIn yPot(p16);//up/down
el13drt 13:a1b3a373c5a4 124
el13drt 62:827cda7a2663 125 //Globabl Variables
el13drt 12:eedda6554615 126
el13drt 35:9f55326c1b0a 127 //sound FX toggle
el13drt 62:827cda7a2663 128 int FX = 0;/*!< Toggle for Sound FX. */
el13drt 17:242ccf6a8442 129
el13drt 35:9f55326c1b0a 130 //previous Direction
el13drt 40:56ab6d368e9b 131 //stops continuous scrolling on some features
el13drt 62:827cda7a2663 132 int preDirection;/*!< Used to stop continuous scrolling. */
el13drt 34:9dc844bdc776 133
el13drt 35:9f55326c1b0a 134 //timer flags to check state of the buttons
el13drt 62:827cda7a2663 135 int buttonFlagA = 0;/*!< Button flag set for ISR when state of buttonA changes. */
el13drt 62:827cda7a2663 136 int buttonFlagB = 0;/*!< Button flag set for ISR when state of buttonB changes. */
el13drt 15:ff3eb0091453 137
el13drt 76:c11cb774bd27 138 //flag for game loop
el13drt 76:c11cb774bd27 139 int gameFlag = 0;/*!< Button flag set for ISR when game is entered. */
el13drt 76:c11cb774bd27 140
el13drt 35:9f55326c1b0a 141 //flag for joystick reading
el13drt 62:827cda7a2663 142 int printFlag = 0;/*!< Print flag set for ISR when Joystick is moved. */
el13drt 14:c2c969e1c6e8 143
el13drt 35:9f55326c1b0a 144 //boundary conditions
el13drt 62:827cda7a2663 145 int cells [84][48];/*!< Boundary conditions for cells.*/
el13drt 12:eedda6554615 146
el13drt 35:9f55326c1b0a 147 //real time score
el13drt 62:827cda7a2663 148 int score = 0;/*!< Integer to show and print Scores. */
el13drt 12:eedda6554615 149
el13drt 35:9f55326c1b0a 150 //stored high score variables
el13drt 72:ade25d595dc9 151 int highScore1;/*!< Integer to store Score 1. */
el13drt 72:ade25d595dc9 152 int highScore2;/*!< Integer to store Score 2. */
el13drt 72:ade25d595dc9 153 int highScore3;/*!< Integer to store Score 3. */
el13drt 21:1fbbd8ebb3d9 154
el13drt 73:1b03202c987a 155 //global char buffers to store initials/score
el13drt 73:1b03202c987a 156 char player1initials[14];// = {"1.AAA.....0"};/*!< Buffer for printing Initials and Top Score 1.*/
el13drt 73:1b03202c987a 157 char player2initials[14];// = {"2.BBB.....0"};/*!< Buffer for printing Initials and Top Score 2.*/
el13drt 73:1b03202c987a 158 char player3initials[14];// = {"3.CCC.....0"};/*!< Buffer for printing Initials and Top Score 3.*/
el13drt 25:70048c7e02c7 159
el13drt 35:9f55326c1b0a 160 //difficulty variable - hazards fall at 2 pixels per refresh
el13drt 62:827cda7a2663 161 int fall = 2;/*!< Increments hazards each Iteration by the Integer stored. */
el13drt 12:eedda6554615 162
el13drt 35:9f55326c1b0a 163 //global variables for movement (pixelNinja)
el13drt 12:eedda6554615 164 int a1 = 22;
el13drt 12:eedda6554615 165 int a2 = 24;
el13drt 12:eedda6554615 166 int a3 = 23;
el13drt 60:681bc941b94d 167 int a4 = 22;
el13drt 60:681bc941b94d 168 int a5 = 22;
el13drt 60:681bc941b94d 169 int a6 = 24;
el13drt 60:681bc941b94d 170 int a7 = 25;
el13drt 60:681bc941b94d 171 int a8 = 20;
el13drt 60:681bc941b94d 172 int a9 = 20;
el13drt 60:681bc941b94d 173 int a10 = 26;
el13drt 60:681bc941b94d 174 int a11 = 26;
el13drt 60:681bc941b94d 175 int a12 = 26;
el13drt 60:681bc941b94d 176 int a13 = 24;
el13drt 60:681bc941b94d 177 int a14 = 19;
el13drt 60:681bc941b94d 178 int a15 = 20;
el13drt 60:681bc941b94d 179 int a16 = 21;
el13drt 12:eedda6554615 180
el13drt 35:9f55326c1b0a 181 //global variable for hazard X co-ordinates
el13drt 62:827cda7a2663 182 int randX1;/*!< X co-ordinate for Hazard 1. */
el13drt 62:827cda7a2663 183 int randX2;/*!< X co-ordinate for Hazard 2. */
el13drt 62:827cda7a2663 184 int randX3;/*!< X co-ordinate for Hazard 3. */
el13drt 62:827cda7a2663 185 int randX4;/*!< X co-ordinate for Hazard 4. */
el13drt 62:827cda7a2663 186 int randX5;/*!< X co-ordinate for Hazard 5. */
el13drt 62:827cda7a2663 187 int randX6;/*!< X co-ordinate for Hazard 6. */
el13drt 12:eedda6554615 188
el13drt 35:9f55326c1b0a 189 //global variable for hazard Y co-ordinates
el13drt 62:827cda7a2663 190 int randY1 = 1;/*!< Y co-ordinate for Hazard 1. */
el13drt 62:827cda7a2663 191 int randY2 = 1;/*!< Y co-ordinate for Hazard 2. */
el13drt 62:827cda7a2663 192 int randY3 = 1;/*!< Y co-ordinate for Hazard 3. */
el13drt 62:827cda7a2663 193 int randY4 = 1;/*!< Y co-ordinate for Hazard 4. */
el13drt 62:827cda7a2663 194 int randY5 = 1;/*!< Y co-ordinate for Hazard 5. */
el13drt 62:827cda7a2663 195 int randY6 = 1;/*!< Y co-ordinate for Hazard 6. */
el13drt 12:eedda6554615 196
el13drt 35:9f55326c1b0a 197 //integers for changing struct ouput states
el13drt 62:827cda7a2663 198 int state1 = 0;/*!< State number for Output 1.*/
el13drt 62:827cda7a2663 199 int state2 = 0;/*!< State number for output 2.*/
el13drt 62:827cda7a2663 200 int state3 = 0;/*!< State number for output 3.*/
el13drt 35:9f55326c1b0a 201
el13drt 72:ade25d595dc9 202 /**
el13drt 72:ade25d595dc9 203 */
el13drt 35:9f55326c1b0a 204 void calibrateJoystick();
el13drt 72:ade25d595dc9 205
el13drt 72:ade25d595dc9 206 /**
el13drt 72:ade25d595dc9 207 */
el13drt 35:9f55326c1b0a 208 void updateJoystick();
el13drt 72:ade25d595dc9 209
el13drt 72:ade25d595dc9 210 /**
el13drt 72:ade25d595dc9 211 */
el13drt 35:9f55326c1b0a 212 void timerExpiredA();
el13drt 72:ade25d595dc9 213
el13drt 72:ade25d595dc9 214 /**
el13drt 72:ade25d595dc9 215 */
el13drt 35:9f55326c1b0a 216 void timerExpiredB();
el13drt 72:ade25d595dc9 217
el13drt 72:ade25d595dc9 218 /**
el13drt 72:ade25d595dc9 219 */
el13drt 35:9f55326c1b0a 220 void actionButton();
el13drt 72:ade25d595dc9 221
el13drt 72:ade25d595dc9 222 /**
el13drt 72:ade25d595dc9 223 */
el13drt 35:9f55326c1b0a 224 void randomise();
el13drt 72:ade25d595dc9 225
el13drt 72:ade25d595dc9 226 /**
el13drt 72:ade25d595dc9 227 */
el13drt 35:9f55326c1b0a 228 void resetGame();
el13drt 72:ade25d595dc9 229
el13drt 72:ade25d595dc9 230 /**
el13drt 72:ade25d595dc9 231 */
el13drt 35:9f55326c1b0a 232 void startrek();
el13drt 72:ade25d595dc9 233
el13drt 72:ade25d595dc9 234 /**
el13drt 72:ade25d595dc9 235 */
el13drt 35:9f55326c1b0a 236 void refreshCursor1();
el13drt 72:ade25d595dc9 237
el13drt 72:ade25d595dc9 238 /**
el13drt 72:ade25d595dc9 239 */
el13drt 35:9f55326c1b0a 240 void refreshCursor2();
el13drt 72:ade25d595dc9 241
el13drt 72:ade25d595dc9 242 /**
el13drt 72:ade25d595dc9 243 */
el13drt 35:9f55326c1b0a 244 void refreshCursor3();
el13drt 72:ade25d595dc9 245
el13drt 72:ade25d595dc9 246 /**
el13drt 72:ade25d595dc9 247 */
el13drt 35:9f55326c1b0a 248 void ninjaBoundaries();
el13drt 63:ff9b64b23d26 249
el13drt 63:ff9b64b23d26 250 /**
el13drt 63:ff9b64b23d26 251 */
el13drt 60:681bc941b94d 252 void ninjaLeft();
el13drt 63:ff9b64b23d26 253
el13drt 63:ff9b64b23d26 254 /**
el13drt 63:ff9b64b23d26 255 */
el13drt 60:681bc941b94d 256 void ninjaRight();
el13drt 63:ff9b64b23d26 257
el13drt 63:ff9b64b23d26 258 /**
el13drt 63:ff9b64b23d26 259 */
el13drt 35:9f55326c1b0a 260 void hazardFall();
el13drt 63:ff9b64b23d26 261
el13drt 63:ff9b64b23d26 262 /**
el13drt 63:ff9b64b23d26 263 */
el13drt 51:df3bab1d6926 264 void newScore();
el13drt 63:ff9b64b23d26 265 /**
el13drt 63:ff9b64b23d26 266 */
el13drt 35:9f55326c1b0a 267 void mainMenu();
el13drt 63:ff9b64b23d26 268
el13drt 63:ff9b64b23d26 269 /**
el13drt 63:ff9b64b23d26 270 */
el13drt 35:9f55326c1b0a 271 void exitMenu();
el13drt 63:ff9b64b23d26 272
el13drt 63:ff9b64b23d26 273 /**
el13drt 63:ff9b64b23d26 274 */
el13drt 35:9f55326c1b0a 275 void optionsMenu();
el13drt 63:ff9b64b23d26 276
el13drt 63:ff9b64b23d26 277 /**
el13drt 63:ff9b64b23d26 278 */
el13drt 35:9f55326c1b0a 279 void game();
el13drt 63:ff9b64b23d26 280
el13drt 63:ff9b64b23d26 281 /**
el13drt 63:ff9b64b23d26 282 */
el13drt 35:9f55326c1b0a 283 void difficultyMenu();
el13drt 63:ff9b64b23d26 284
el13drt 63:ff9b64b23d26 285 /**
el13drt 63:ff9b64b23d26 286 */
el13drt 35:9f55326c1b0a 287 void soundFXMenu();
el13drt 63:ff9b64b23d26 288
el13drt 63:ff9b64b23d26 289 /**
el13drt 63:ff9b64b23d26 290 */
el13drt 35:9f55326c1b0a 291 void scores();
el13drt 35:9f55326c1b0a 292
el13drt 62:827cda7a2663 293 /**
el13drt 62:827cda7a2663 294 */
el13drt 35:9f55326c1b0a 295 void drawNinja();
el13drt 62:827cda7a2663 296
el13drt 62:827cda7a2663 297 /**
el13drt 62:827cda7a2663 298 */
el13drt 35:9f55326c1b0a 299 void drawHazards();
el13drt 62:827cda7a2663 300
el13drt 62:827cda7a2663 301 /**
el13drt 62:827cda7a2663 302 */
el13drt 35:9f55326c1b0a 303 void drawWelcome();
el13drt 62:827cda7a2663 304
el13drt 62:827cda7a2663 305 /**
el13drt 62:827cda7a2663 306 */
el13drt 35:9f55326c1b0a 307 void drawBackground();
el13drt 62:827cda7a2663 308
el13drt 62:827cda7a2663 309 /**
el13drt 62:827cda7a2663 310 */
el13drt 35:9f55326c1b0a 311 void drawSoundFXMenu();
el13drt 62:827cda7a2663 312
el13drt 62:827cda7a2663 313 /**
el13drt 62:827cda7a2663 314 */
el13drt 35:9f55326c1b0a 315 void drawDifficultyMenu();
el13drt 62:827cda7a2663 316
el13drt 62:827cda7a2663 317 /**
el13drt 62:827cda7a2663 318 */
el13drt 35:9f55326c1b0a 319 void drawMainMenu();
el13drt 62:827cda7a2663 320
el13drt 62:827cda7a2663 321 /**
el13drt 62:827cda7a2663 322 */
el13drt 35:9f55326c1b0a 323 void drawOptionsMenu();
el13drt 62:827cda7a2663 324
el13drt 62:827cda7a2663 325 /**
el13drt 62:827cda7a2663 326 */
el13drt 35:9f55326c1b0a 327 void drawExitMenu();
el13drt 62:827cda7a2663 328