Dependencies: MMA8452 N5110 PowerControl beep mbed
GameFSM.h@8:aebb468546c5, 2015-05-09 (annotated)
- 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?
User | Revision | Line number | New 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 |