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