Dependencies:   MMA8452 N5110 PowerControl beep mbed

Committer:
stevenle93
Date:
Thu May 07 23:56:49 2015 +0000
Revision:
6:3e8ce3108702
Parent:
5:c0a58a6916f2
Child:
7:95abf8c8af1e
Changes: debouncing the buttons, welcome screen.

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