Dependencies: MMA8452 N5110 PowerControl beep mbed
GameFSM.h@6:3e8ce3108702, 2015-05-07 (annotated)
- 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?
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 | 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 |