Dependencies:   MMA8452 N5110 PowerControl beep mbed

Committer:
stevenle93
Date:
Sun May 10 17:21:39 2015 +0000
Revision:
9:522f9311ff4b
Parent:
8:aebb468546c5
Changes: all header file are documented, changing in debounce function of all the buttons, little change with condition of putting mbed into sleep mode.;

Who changed what in which revision?

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