Dependencies:   MMA8452 N5110 PowerControl beep mbed

Committer:
stevenle93
Date:
Sat May 09 22:59:15 2015 +0000
Revision:
8:aebb468546c5
Parent:
7:95abf8c8af1e
Child:
9:522f9311ff4b
Change: detach the tickers after the game.;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
stevenle93 3:1974db5993ef 1 /**
stevenle93 3:1974db5993ef 2 @file GameFSM.h
stevenle93 3:1974db5993ef 3
stevenle93 6:3e8ce3108702 4 @brief Header file of Game's Finite stage Machine
stevenle93 3:1974db5993ef 5 */
stevenle93 3:1974db5993ef 6 #ifndef GAMEFSM_H
stevenle93 3:1974db5993ef 7 #define GAMEFSM_H
stevenle93 3:1974db5993ef 8
stevenle93 3:1974db5993ef 9 #include "Game.h"
stevenle93 3:1974db5993ef 10 #include "Clock.h"
stevenle93 3:1974db5993ef 11 #include "N5110.h"
stevenle93 3:1974db5993ef 12 #include "Menu.h"
stevenle93 5:c0a58a6916f2 13 #include "PowerControl/PowerControl.h"
stevenle93 6:3e8ce3108702 14 #include "mbed.h"
stevenle93 3:1974db5993ef 15
stevenle93 3:1974db5993ef 16 Game game;
stevenle93 3:1974db5993ef 17 Clock countdown;
stevenle93 3:1974db5993ef 18 Menu menu;
stevenle93 6:3e8ce3108702 19 /**
stevenle93 6:3e8ce3108702 20 @namespace ButtonA
stevenle93 6:3e8ce3108702 21 @brief Button A of interrupting service
stevenle93 6:3e8ce3108702 22 */
stevenle93 6:3e8ce3108702 23 InterruptIn ButtonA(p16);
stevenle93 6:3e8ce3108702 24 /**
stevenle93 6:3e8ce3108702 25 @namespace ButtonB
stevenle93 6:3e8ce3108702 26 @brief Button B of interrupting service
stevenle93 6:3e8ce3108702 27 */
stevenle93 6:3e8ce3108702 28 InterruptIn ButtonB(p15);
stevenle93 6:3e8ce3108702 29 /**
stevenle93 6:3e8ce3108702 30 @namespace ButtonD
stevenle93 6:3e8ce3108702 31 @brief Button Down of interrupting service
stevenle93 6:3e8ce3108702 32 */
stevenle93 6:3e8ce3108702 33 InterruptIn ButtonD(p24);
stevenle93 6:3e8ce3108702 34 /**
stevenle93 6:3e8ce3108702 35 @namespace ButtonU
stevenle93 6:3e8ce3108702 36 @brief Button Up of interrupting service
stevenle93 6:3e8ce3108702 37 */
stevenle93 6:3e8ce3108702 38 InterruptIn ButtonU(p23);
stevenle93 6:3e8ce3108702 39
stevenle93 6:3e8ce3108702 40 int BuAFlag = 0;
stevenle93 6:3e8ce3108702 41 int BuBFlag = 0;
stevenle93 6:3e8ce3108702 42 int BuDFlag = 0;
stevenle93 6:3e8ce3108702 43 int BuUFlag = 0;
stevenle93 6:3e8ce3108702 44
stevenle93 6:3e8ce3108702 45 int stage = 0;
stevenle93 6:3e8ce3108702 46 int substage = 0;
stevenle93 6:3e8ce3108702 47
stevenle93 6:3e8ce3108702 48 Timer debounce;
stevenle93 7:95abf8c8af1e 49
stevenle93 6:3e8ce3108702 50 void BuAPress()
stevenle93 6:3e8ce3108702 51 {
stevenle93 7:95abf8c8af1e 52 if (debounce.read_ms()>300) {
stevenle93 6:3e8ce3108702 53 BuAFlag = 1; //Set flag for button A
stevenle93 6:3e8ce3108702 54 }
stevenle93 6:3e8ce3108702 55 }
stevenle93 6:3e8ce3108702 56
stevenle93 6:3e8ce3108702 57 void BuBPress()
stevenle93 6:3e8ce3108702 58 {
stevenle93 7:95abf8c8af1e 59 if (debounce.read_ms()>300) {
stevenle93 6:3e8ce3108702 60 BuBFlag = 1; //Set flag for button B
stevenle93 6:3e8ce3108702 61 }
stevenle93 6:3e8ce3108702 62 }
stevenle93 6:3e8ce3108702 63
stevenle93 6:3e8ce3108702 64 void BuDPress()
stevenle93 6:3e8ce3108702 65 {
stevenle93 7:95abf8c8af1e 66 if (debounce.read_ms()>300) {
stevenle93 6:3e8ce3108702 67 BuDFlag = 1; //Set flag for button Down
stevenle93 6:3e8ce3108702 68 }
stevenle93 6:3e8ce3108702 69 }
stevenle93 6:3e8ce3108702 70
stevenle93 6:3e8ce3108702 71 void BuUPress()
stevenle93 6:3e8ce3108702 72 {
stevenle93 7:95abf8c8af1e 73 if (debounce.read_ms()>300) {
stevenle93 6:3e8ce3108702 74 BuUFlag = 1; //Set flag for button Up
stevenle93 6:3e8ce3108702 75 }
stevenle93 6:3e8ce3108702 76 }
stevenle93 3:1974db5993ef 77
stevenle93 3:1974db5993ef 78 class FSM
stevenle93 3:1974db5993ef 79 {
stevenle93 3:1974db5993ef 80 public:
stevenle93 3:1974db5993ef 81 /**
stevenle93 3:1974db5993ef 82 The function contains FSM of the whole programme
stevenle93 3:1974db5993ef 83 */
stevenle93 3:1974db5993ef 84 void proact();
stevenle93 5:c0a58a6916f2 85 void resetButton();
stevenle93 5:c0a58a6916f2 86 void sleepMode();
stevenle93 3:1974db5993ef 87 };
stevenle93 3:1974db5993ef 88
stevenle93 5:c0a58a6916f2 89 void FSM::resetButton()
stevenle93 5:c0a58a6916f2 90 {
stevenle93 5:c0a58a6916f2 91 BuDFlag = 0;
stevenle93 5:c0a58a6916f2 92 BuUFlag = 0;
stevenle93 5:c0a58a6916f2 93 BuAFlag = 0;
stevenle93 5:c0a58a6916f2 94 BuBFlag = 0;
stevenle93 8:aebb468546c5 95 lcd.clear();
stevenle93 5:c0a58a6916f2 96 }
stevenle93 5:c0a58a6916f2 97
stevenle93 3:1974db5993ef 98 void FSM::proact()
stevenle93 3:1974db5993ef 99 {
stevenle93 6:3e8ce3108702 100 switch(stage) {
stevenle93 6:3e8ce3108702 101 case 0: //Main stage 0: MAIN MENU - Cursor at Play line
stevenle93 8:aebb468546c5 102
stevenle93 3:1974db5993ef 103 menu.main();
stevenle93 3:1974db5993ef 104 lcd.drawCircle(23,27,2,1);
stevenle93 3:1974db5993ef 105 if (BuDFlag) {
stevenle93 3:1974db5993ef 106 resetButton();
stevenle93 6:3e8ce3108702 107 stage = 1;
stevenle93 3:1974db5993ef 108 }
stevenle93 3:1974db5993ef 109 if (BuAFlag) {
stevenle93 3:1974db5993ef 110 resetButton();
stevenle93 6:3e8ce3108702 111 stage = 3;
stevenle93 3:1974db5993ef 112 }
stevenle93 7:95abf8c8af1e 113
stevenle93 3:1974db5993ef 114 break;
stevenle93 3:1974db5993ef 115
stevenle93 6:3e8ce3108702 116 case 1: //Main stage 1: MAIN MENU - Cursor at Score line
stevenle93 8:aebb468546c5 117
stevenle93 3:1974db5993ef 118 menu.main();
stevenle93 3:1974db5993ef 119 lcd.drawCircle(20,35,2,1);
stevenle93 3:1974db5993ef 120 if (BuUFlag) {
stevenle93 3:1974db5993ef 121 resetButton();
stevenle93 6:3e8ce3108702 122 stage = 0;
stevenle93 3:1974db5993ef 123 }
stevenle93 3:1974db5993ef 124 if (BuAFlag) {
stevenle93 3:1974db5993ef 125 resetButton();
stevenle93 6:3e8ce3108702 126 stage = 2;
stevenle93 3:1974db5993ef 127 }
stevenle93 7:95abf8c8af1e 128
stevenle93 5:c0a58a6916f2 129 break;
stevenle93 5:c0a58a6916f2 130
stevenle93 6:3e8ce3108702 131 case 2: //(Main stage 2)Sub stage 0: HIGH SCORE sector - Cursor is at Easy line
stevenle93 8:aebb468546c5 132
stevenle93 5:c0a58a6916f2 133 menu.highscore();
stevenle93 5:c0a58a6916f2 134 lcd.drawCircle(23,19,2,1);
stevenle93 5:c0a58a6916f2 135 if (BuDFlag) {
stevenle93 5:c0a58a6916f2 136 resetButton();
stevenle93 6:3e8ce3108702 137 stage = 12; //Go to HIGH SCORE sector/Normal line
stevenle93 5:c0a58a6916f2 138 }
stevenle93 5:c0a58a6916f2 139 if (BuAFlag) {
stevenle93 5:c0a58a6916f2 140 resetButton();
stevenle93 6:3e8ce3108702 141 stage = 14; //Go to HIGH SCORE sector/Hard high score
stevenle93 5:c0a58a6916f2 142 }
stevenle93 5:c0a58a6916f2 143 if (BuBFlag) {
stevenle93 5:c0a58a6916f2 144 resetButton();
stevenle93 6:3e8ce3108702 145 stage = 1; //Back to MAIN MENU sector/Score line
stevenle93 5:c0a58a6916f2 146 }
stevenle93 7:95abf8c8af1e 147
stevenle93 3:1974db5993ef 148 break;
stevenle93 3:1974db5993ef 149
stevenle93 6:3e8ce3108702 150 case 12: //(Main stage 2)Sub stage 1: HIGH SCORE sector - Cursor is at Normal line
stevenle93 8:aebb468546c5 151
stevenle93 5:c0a58a6916f2 152 menu.highscore();
stevenle93 5:c0a58a6916f2 153 lcd.drawCircle(17,27,2,1);
stevenle93 5:c0a58a6916f2 154 if (BuUFlag) {
stevenle93 5:c0a58a6916f2 155 resetButton();
stevenle93 6:3e8ce3108702 156 stage = 2; //Go to HIGH SCORE sector/Easy line
stevenle93 5:c0a58a6916f2 157 }
stevenle93 5:c0a58a6916f2 158 if (BuDFlag) {
stevenle93 5:c0a58a6916f2 159 resetButton();
stevenle93 6:3e8ce3108702 160 stage = 13; //Go to HIGH SCORE sector/Hard line
stevenle93 5:c0a58a6916f2 161 }
stevenle93 5:c0a58a6916f2 162 if (BuAFlag) {
stevenle93 5:c0a58a6916f2 163 resetButton();
stevenle93 6:3e8ce3108702 164 stage = 15; //Go to HIGH SCORE sector/Normal high score
stevenle93 5:c0a58a6916f2 165 }
stevenle93 5:c0a58a6916f2 166 if (BuBFlag) {
stevenle93 5:c0a58a6916f2 167 resetButton();
stevenle93 6:3e8ce3108702 168 stage = 1; //Back to MAIN MENU sector/Score line
stevenle93 5:c0a58a6916f2 169 }
stevenle93 7:95abf8c8af1e 170
stevenle93 5:c0a58a6916f2 171 break;
stevenle93 5:c0a58a6916f2 172
stevenle93 6:3e8ce3108702 173 case 13: //(Main stage 2)Sub stage 2: HIGH SCORE sector - Cursor is at Hard line
stevenle93 8:aebb468546c5 174
stevenle93 3:1974db5993ef 175 menu.highscore();
stevenle93 5:c0a58a6916f2 176 lcd.drawCircle(23,35,2,1);
stevenle93 5:c0a58a6916f2 177 if (BuUFlag) {
stevenle93 5:c0a58a6916f2 178 resetButton();
stevenle93 6:3e8ce3108702 179 stage = 12; //Go to HIGH SCORE sector/Normal line
stevenle93 5:c0a58a6916f2 180 }
stevenle93 5:c0a58a6916f2 181 if (BuAFlag) {
stevenle93 5:c0a58a6916f2 182 resetButton();
stevenle93 6:3e8ce3108702 183 stage = 16; //Go to HIGH SCORE sector/Hard high score
stevenle93 5:c0a58a6916f2 184 }
stevenle93 5:c0a58a6916f2 185 if (BuBFlag) {
stevenle93 5:c0a58a6916f2 186 resetButton();
stevenle93 6:3e8ce3108702 187 stage = 1; //Back to MAIN MENU sector/Score line
stevenle93 5:c0a58a6916f2 188 }
stevenle93 7:95abf8c8af1e 189
stevenle93 5:c0a58a6916f2 190 break;
stevenle93 5:c0a58a6916f2 191
stevenle93 6:3e8ce3108702 192 case 14: //(Main stage 2)Sub stage 3: HIGH SCORE sector - Easy mode high score
stevenle93 8:aebb468546c5 193
stevenle93 5:c0a58a6916f2 194 lcd.printString("EASY MODE",16,0);
stevenle93 5:c0a58a6916f2 195 lcd.printString("High score",14,2);
stevenle93 5:c0a58a6916f2 196 lcd.printString("Your score",14,4);
stevenle93 5:c0a58a6916f2 197 //Easy mode high score
stevenle93 5:c0a58a6916f2 198 char HScore0[5];
stevenle93 5:c0a58a6916f2 199 sprintf(HScore0,"%d",game.scoArr[0]);
stevenle93 5:c0a58a6916f2 200 lcd.printString(HScore0,38,3);
stevenle93 5:c0a58a6916f2 201 //Easy mode current score
stevenle93 5:c0a58a6916f2 202 char HScore1[5];
stevenle93 5:c0a58a6916f2 203 sprintf(HScore1,"%d",game.scoArr[1]);
stevenle93 5:c0a58a6916f2 204 lcd.printString(HScore1,38,5);
stevenle93 3:1974db5993ef 205 if (BuBFlag) {
stevenle93 3:1974db5993ef 206 resetButton();
stevenle93 6:3e8ce3108702 207 stage = 2; //Back to HIGH SCORE sector/Easy line
stevenle93 5:c0a58a6916f2 208 }
stevenle93 7:95abf8c8af1e 209
stevenle93 5:c0a58a6916f2 210 break;
stevenle93 5:c0a58a6916f2 211
stevenle93 6:3e8ce3108702 212 case 15: //(Main stage 2)Sub stage 4: HIGH SCORE sector - Normal mode high score
stevenle93 8:aebb468546c5 213
stevenle93 5:c0a58a6916f2 214 lcd.printString("NORMAL MODE",8,0);
stevenle93 5:c0a58a6916f2 215 lcd.printString("High score",14,2);
stevenle93 5:c0a58a6916f2 216 lcd.printString("Your score",14,4);
stevenle93 5:c0a58a6916f2 217 //Normal mode high score
stevenle93 5:c0a58a6916f2 218 char HScore2[5];
stevenle93 5:c0a58a6916f2 219 sprintf(HScore2,"%d",game.scoArr[2]);
stevenle93 5:c0a58a6916f2 220 lcd.printString(HScore2,38,3);
stevenle93 5:c0a58a6916f2 221 //Normal mode current score
stevenle93 5:c0a58a6916f2 222 char HScore3[5];
stevenle93 5:c0a58a6916f2 223 sprintf(HScore3,"%d",game.scoArr[3]);
stevenle93 5:c0a58a6916f2 224 lcd.printString(HScore3,38,5);
stevenle93 5:c0a58a6916f2 225 if (BuBFlag) {
stevenle93 5:c0a58a6916f2 226 resetButton();
stevenle93 6:3e8ce3108702 227 stage = 12; //Back to HIGH SCORE sector/Normal line
stevenle93 3:1974db5993ef 228 }
stevenle93 7:95abf8c8af1e 229
stevenle93 5:c0a58a6916f2 230 break;
stevenle93 5:c0a58a6916f2 231
stevenle93 6:3e8ce3108702 232 case 16: //(Main stage 2)Sub stage 5: HIGH SCORE sector - Hard mode high score
stevenle93 8:aebb468546c5 233
stevenle93 5:c0a58a6916f2 234 lcd.printString("HARD MODE",16,0);
stevenle93 5:c0a58a6916f2 235 lcd.printString("High score",14,2);
stevenle93 5:c0a58a6916f2 236 lcd.printString("Your score",14,4);
stevenle93 5:c0a58a6916f2 237 //Hard mode high score
stevenle93 5:c0a58a6916f2 238 char HScore4[5];
stevenle93 5:c0a58a6916f2 239 sprintf(HScore4,"%d",game.scoArr[4]);
stevenle93 5:c0a58a6916f2 240 lcd.printString(HScore4,38,3);
stevenle93 5:c0a58a6916f2 241 //Hard mode current score
stevenle93 5:c0a58a6916f2 242 char HScore5[5];
stevenle93 5:c0a58a6916f2 243 sprintf(HScore5,"%d",game.scoArr[5]);
stevenle93 5:c0a58a6916f2 244 lcd.printString(HScore5,38,5);
stevenle93 5:c0a58a6916f2 245 if (BuBFlag) {
stevenle93 5:c0a58a6916f2 246 resetButton();
stevenle93 6:3e8ce3108702 247 stage = 13; //Back to HIGH SCORE sector/Hard line
stevenle93 5:c0a58a6916f2 248 }
stevenle93 7:95abf8c8af1e 249
stevenle93 3:1974db5993ef 250 break;
stevenle93 3:1974db5993ef 251
stevenle93 3:1974db5993ef 252 //This case is a game condition setting case
stevenle93 3:1974db5993ef 253 //Clock countdown was set to 60 seconds
stevenle93 3:1974db5993ef 254 //Score was set to 0
stevenle93 6:3e8ce3108702 255 case 3: //Main stage 3: RESETING stage - Before entering GAME MODE menu
stevenle93 3:1974db5993ef 256 game.reset();
stevenle93 3:1974db5993ef 257 resetButton();
stevenle93 6:3e8ce3108702 258 stage = 4;
stevenle93 3:1974db5993ef 259 break;
stevenle93 3:1974db5993ef 260 //////////GAME MODE SECTOR/////////
stevenle93 6:3e8ce3108702 261 case 4: //(Main stage 4)Sub stage 0: GAME MODE sector - Cursor at Easy line
stevenle93 8:aebb468546c5 262
stevenle93 3:1974db5993ef 263 menu.gameset();
stevenle93 3:1974db5993ef 264 lcd.drawCircle(23,19,2,1);
stevenle93 3:1974db5993ef 265 if (BuAFlag) {
stevenle93 3:1974db5993ef 266 resetButton();
stevenle93 6:3e8ce3108702 267 stage = 7;
stevenle93 3:1974db5993ef 268 }
stevenle93 3:1974db5993ef 269 if (BuBFlag) {
stevenle93 3:1974db5993ef 270 resetButton();
stevenle93 6:3e8ce3108702 271 stage = 0;
stevenle93 3:1974db5993ef 272 }
stevenle93 3:1974db5993ef 273 if (BuDFlag) {
stevenle93 3:1974db5993ef 274 resetButton();
stevenle93 6:3e8ce3108702 275 stage = 5; //Go to stage 8 of Game set menu
stevenle93 3:1974db5993ef 276 }
stevenle93 7:95abf8c8af1e 277
stevenle93 3:1974db5993ef 278 break;
stevenle93 3:1974db5993ef 279
stevenle93 6:3e8ce3108702 280 case 5: //(Main stage 4)Sub stage 1: GAME MODE sector - Cursor at Normal line
stevenle93 8:aebb468546c5 281
stevenle93 5:c0a58a6916f2 282 menu.gameset();
stevenle93 5:c0a58a6916f2 283 lcd.drawCircle(17,27,2,1);
stevenle93 5:c0a58a6916f2 284 if (BuAFlag) {
stevenle93 5:c0a58a6916f2 285 resetButton();
stevenle93 6:3e8ce3108702 286 stage = 8; //Go to stage 8: Normal mode game
stevenle93 5:c0a58a6916f2 287 }
stevenle93 5:c0a58a6916f2 288 if (BuBFlag) {
stevenle93 5:c0a58a6916f2 289 resetButton();
stevenle93 6:3e8ce3108702 290 stage = 0; //Go back to stage 0: Main menu
stevenle93 5:c0a58a6916f2 291 }
stevenle93 5:c0a58a6916f2 292 if (BuUFlag) {
stevenle93 5:c0a58a6916f2 293 resetButton();
stevenle93 6:3e8ce3108702 294 stage = 4; //Go to stage 4: Game mode menu
stevenle93 5:c0a58a6916f2 295 }
stevenle93 5:c0a58a6916f2 296 if (BuDFlag) {
stevenle93 5:c0a58a6916f2 297 resetButton();
stevenle93 6:3e8ce3108702 298 stage = 6; //Go to stage 6: Game mode menu
stevenle93 5:c0a58a6916f2 299 }
stevenle93 7:95abf8c8af1e 300
stevenle93 5:c0a58a6916f2 301 break;
stevenle93 5:c0a58a6916f2 302
stevenle93 6:3e8ce3108702 303 case 6: //(Main stage 4)Sub stage 2: GAME MODE sector - Cursor at Hard line
stevenle93 8:aebb468546c5 304
stevenle93 5:c0a58a6916f2 305 menu.gameset();
stevenle93 5:c0a58a6916f2 306 lcd.drawCircle(23,35,2,1);
stevenle93 5:c0a58a6916f2 307 if (BuAFlag) {
stevenle93 5:c0a58a6916f2 308 resetButton();
stevenle93 6:3e8ce3108702 309 stage = 9;
stevenle93 5:c0a58a6916f2 310 }
stevenle93 5:c0a58a6916f2 311 if (BuBFlag) {
stevenle93 5:c0a58a6916f2 312 resetButton();
stevenle93 6:3e8ce3108702 313 stage = 0;
stevenle93 5:c0a58a6916f2 314 }
stevenle93 5:c0a58a6916f2 315 if (BuUFlag) {
stevenle93 5:c0a58a6916f2 316 resetButton();
stevenle93 6:3e8ce3108702 317 stage = 5;
stevenle93 5:c0a58a6916f2 318 }
stevenle93 7:95abf8c8af1e 319
stevenle93 5:c0a58a6916f2 320 break;
stevenle93 5:c0a58a6916f2 321
stevenle93 6:3e8ce3108702 322 case 7: //(Main stage 4)Sub stage 3: GAME SCREEN sector - Easy mode
stevenle93 8:aebb468546c5 323
stevenle93 3:1974db5993ef 324 timer.attach(&timerExpired,0.5);
stevenle93 3:1974db5993ef 325 gatimer.attach(&gatimerExpired,0.1); //Update time for Easy mode is 0.1s
stevenle93 3:1974db5993ef 326 while(CClock > 0) {
stevenle93 3:1974db5993ef 327 countdown.countDown();
stevenle93 3:1974db5993ef 328 game.easyMode();
stevenle93 3:1974db5993ef 329 }
stevenle93 3:1974db5993ef 330 if (CClock == 0) {
stevenle93 3:1974db5993ef 331 countdown.timeout();
stevenle93 3:1974db5993ef 332 }
stevenle93 3:1974db5993ef 333 resetButton();
stevenle93 8:aebb468546c5 334 timer.detach();
stevenle93 8:aebb468546c5 335 gatimer.detach();
stevenle93 6:3e8ce3108702 336 stage = 10; //Go to stage 10: Your score menu
stevenle93 5:c0a58a6916f2 337
stevenle93 3:1974db5993ef 338 break;
stevenle93 3:1974db5993ef 339
stevenle93 6:3e8ce3108702 340 case 8: //(Main stage 4)Sub stage 4: GAME SCREEN sector - Normal mode
stevenle93 8:aebb468546c5 341
stevenle93 3:1974db5993ef 342 timer.attach(&timerExpired,0.5);
stevenle93 3:1974db5993ef 343 gatimer.attach(&gatimerExpired,0.2); //Update time for Normal mode is 0.2s
stevenle93 3:1974db5993ef 344 while(CClock > 0) {
stevenle93 3:1974db5993ef 345 countdown.countDown();
stevenle93 3:1974db5993ef 346 game.norMode(); //Normal mode of game is activated
stevenle93 3:1974db5993ef 347 }
stevenle93 3:1974db5993ef 348 if (CClock == 0) {
stevenle93 3:1974db5993ef 349 countdown.timeout();
stevenle93 3:1974db5993ef 350 }
stevenle93 3:1974db5993ef 351 resetButton();
stevenle93 8:aebb468546c5 352 timer.detach();
stevenle93 8:aebb468546c5 353 gatimer.detach();
stevenle93 6:3e8ce3108702 354 stage = 10; //Go to stage 10: Your score menu
stevenle93 5:c0a58a6916f2 355
stevenle93 3:1974db5993ef 356 break;
stevenle93 3:1974db5993ef 357
stevenle93 6:3e8ce3108702 358 case 9: //(Main stage 4)Sub stage 5: GAME SCREEN sector - Hard mode
stevenle93 8:aebb468546c5 359
stevenle93 3:1974db5993ef 360 timer.attach(&timerExpired,0.5);
stevenle93 3:1974db5993ef 361 gatimer.attach(&gatimerExpired,0.4); //Update time for Hard mode is 0.4s
stevenle93 3:1974db5993ef 362 while(CClock > 0) {
stevenle93 3:1974db5993ef 363 countdown.countDown();
stevenle93 3:1974db5993ef 364 game.hardMode(); //Hard mode of the game is activated
stevenle93 3:1974db5993ef 365 }
stevenle93 3:1974db5993ef 366 if (CClock == 0) {
stevenle93 3:1974db5993ef 367 countdown.timeout();
stevenle93 3:1974db5993ef 368 }
stevenle93 3:1974db5993ef 369 resetButton();
stevenle93 8:aebb468546c5 370 timer.detach();
stevenle93 8:aebb468546c5 371 gatimer.detach();
stevenle93 6:3e8ce3108702 372 stage = 10; //Go to stage 10: Your score menu
stevenle93 3:1974db5993ef 373
stevenle93 3:1974db5993ef 374 break;
stevenle93 3:1974db5993ef 375
stevenle93 6:3e8ce3108702 376 case 10: //Main stage 5: YOUR SCORE sector - Cursor at Main menu line
stevenle93 8:aebb468546c5 377
stevenle93 3:1974db5993ef 378 menu.yourscore();
stevenle93 3:1974db5993ef 379 lcd.drawCircle(8,27,2,1);
stevenle93 3:1974db5993ef 380 char YScore[14];
stevenle93 3:1974db5993ef 381 sprintf(YScore,"%d",game.score);
stevenle93 3:1974db5993ef 382 lcd.printString(YScore,37,2);
stevenle93 3:1974db5993ef 383 if (BuDFlag) {
stevenle93 3:1974db5993ef 384 resetButton();
stevenle93 6:3e8ce3108702 385 stage = 11;
stevenle93 3:1974db5993ef 386 }
stevenle93 3:1974db5993ef 387 if (BuAFlag) {
stevenle93 3:1974db5993ef 388 resetButton();
stevenle93 6:3e8ce3108702 389 stage = 0;
stevenle93 3:1974db5993ef 390 }
stevenle93 7:95abf8c8af1e 391
stevenle93 3:1974db5993ef 392 break;
stevenle93 3:1974db5993ef 393
stevenle93 6:3e8ce3108702 394 case 11: //Main stage 6: YOUR SCORE sector - Cursor at Reset line
stevenle93 8:aebb468546c5 395
stevenle93 3:1974db5993ef 396 menu.yourscore();
stevenle93 3:1974db5993ef 397 lcd.drawCircle(8,35,2,1);
stevenle93 3:1974db5993ef 398 lcd.printString(YScore,37,2);
stevenle93 3:1974db5993ef 399 if (BuUFlag) {
stevenle93 3:1974db5993ef 400 resetButton();
stevenle93 6:3e8ce3108702 401 stage = 10;
stevenle93 3:1974db5993ef 402 }
stevenle93 3:1974db5993ef 403 if (BuAFlag) {
stevenle93 3:1974db5993ef 404 resetButton();
stevenle93 6:3e8ce3108702 405 stage = 3;
stevenle93 3:1974db5993ef 406 }
stevenle93 7:95abf8c8af1e 407
stevenle93 3:1974db5993ef 408 break;
stevenle93 3:1974db5993ef 409 }
stevenle93 3:1974db5993ef 410 wait(0.1);
stevenle93 3:1974db5993ef 411 }
stevenle93 3:1974db5993ef 412 #endif