Max Houghton
/
MazeGame_el15mh
el15mh 200929957
main.cpp@2:a488caea1601, 2017-03-30 (annotated)
- Committer:
- el15mh
- Date:
- Thu Mar 30 14:08:03 2017 +0000
- Revision:
- 2:a488caea1601
- Parent:
- 1:8ce2586b5965
- Child:
- 3:02653cb1c8f8
options menu working;
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
el15mh | 0:d7701c5c20e6 | 1 | #include "mbed.h" |
el15mh | 0:d7701c5c20e6 | 2 | #include "N5110.h" |
el15mh | 0:d7701c5c20e6 | 3 | #include "Gamepad.h" |
el15mh | 0:d7701c5c20e6 | 4 | |
el15mh | 0:d7701c5c20e6 | 5 | // CREATE OBJECTS // |
el15mh | 0:d7701c5c20e6 | 6 | N5110 lcd(PTC9,PTC0,PTC7,PTD2,PTD1,PTC11); |
el15mh | 0:d7701c5c20e6 | 7 | Gamepad pad; |
el15mh | 0:d7701c5c20e6 | 8 | |
el15mh | 0:d7701c5c20e6 | 9 | // FUNCTION PROTOTYPES // |
el15mh | 0:d7701c5c20e6 | 10 | void init(); |
el15mh | 2:a488caea1601 | 11 | void difficultyOptions(); |
el15mh | 2:a488caea1601 | 12 | void colourOptions(); |
el15mh | 2:a488caea1601 | 13 | |
el15mh | 0:d7701c5c20e6 | 14 | |
el15mh | 0:d7701c5c20e6 | 15 | int main() |
el15mh | 0:d7701c5c20e6 | 16 | { |
el15mh | 0:d7701c5c20e6 | 17 | init(); // initialise devices |
el15mh | 0:d7701c5c20e6 | 18 | |
el15mh | 2:a488caea1601 | 19 | printf("Devices initialised \n"); |
el15mh | 2:a488caea1601 | 20 | |
el15mh | 2:a488caea1601 | 21 | int selected = 0; |
el15mh | 2:a488caea1601 | 22 | |
el15mh | 2:a488caea1601 | 23 | while(1) { |
el15mh | 0:d7701c5c20e6 | 24 | |
el15mh | 2:a488caea1601 | 25 | // printf("While loop 1 \n"); |
el15mh | 2:a488caea1601 | 26 | // printf("Selected = %i \n", selected); |
el15mh | 2:a488caea1601 | 27 | switch (selected) { |
el15mh | 2:a488caea1601 | 28 | |
el15mh | 2:a488caea1601 | 29 | case 1: |
el15mh | 2:a488caea1601 | 30 | |
el15mh | 2:a488caea1601 | 31 | lcd.clear(); |
el15mh | 2:a488caea1601 | 32 | // displays options page with indicator on first |
el15mh | 2:a488caea1601 | 33 | lcd.printString("Game Options:", 0, 0); |
el15mh | 2:a488caea1601 | 34 | lcd.printString(">Difficulty", 0, 2); |
el15mh | 2:a488caea1601 | 35 | lcd.printString(" Ball Colour", 0, 3); |
el15mh | 2:a488caea1601 | 36 | lcd.refresh(); |
el15mh | 2:a488caea1601 | 37 | |
el15mh | 2:a488caea1601 | 38 | if (pad.check_event(Gamepad::A_PRESSED) || |
el15mh | 2:a488caea1601 | 39 | pad.check_event(Gamepad::JOY_PRESSED)){ |
el15mh | 0:d7701c5c20e6 | 40 | |
el15mh | 2:a488caea1601 | 41 | difficultyOptions(); |
el15mh | 2:a488caea1601 | 42 | } |
el15mh | 2:a488caea1601 | 43 | |
el15mh | 2:a488caea1601 | 44 | wait_ms(250); |
el15mh | 2:a488caea1601 | 45 | |
el15mh | 2:a488caea1601 | 46 | break; |
el15mh | 2:a488caea1601 | 47 | |
el15mh | 2:a488caea1601 | 48 | case 2: |
el15mh | 2:a488caea1601 | 49 | |
el15mh | 2:a488caea1601 | 50 | lcd.clear(); |
el15mh | 2:a488caea1601 | 51 | // displays options page with indicator on second |
el15mh | 2:a488caea1601 | 52 | lcd.printString("Game Options:", 0, 0); |
el15mh | 2:a488caea1601 | 53 | lcd.printString(" Difficulty", 0, 2); |
el15mh | 2:a488caea1601 | 54 | lcd.printString(">Ball Colour", 0, 3); |
el15mh | 2:a488caea1601 | 55 | lcd.refresh(); |
el15mh | 2:a488caea1601 | 56 | |
el15mh | 2:a488caea1601 | 57 | // if second option selected |
el15mh | 2:a488caea1601 | 58 | if (pad.check_event(Gamepad::A_PRESSED) || |
el15mh | 2:a488caea1601 | 59 | pad.check_event(Gamepad::JOY_PRESSED)){ |
el15mh | 0:d7701c5c20e6 | 60 | |
el15mh | 2:a488caea1601 | 61 | colourOptions(); |
el15mh | 2:a488caea1601 | 62 | } |
el15mh | 2:a488caea1601 | 63 | |
el15mh | 2:a488caea1601 | 64 | wait_ms(250); |
el15mh | 2:a488caea1601 | 65 | |
el15mh | 2:a488caea1601 | 66 | break; |
el15mh | 2:a488caea1601 | 67 | |
el15mh | 2:a488caea1601 | 68 | default: |
el15mh | 2:a488caea1601 | 69 | |
el15mh | 2:a488caea1601 | 70 | selected = 1; |
el15mh | 2:a488caea1601 | 71 | |
el15mh | 2:a488caea1601 | 72 | break; |
el15mh | 2:a488caea1601 | 73 | } |
el15mh | 2:a488caea1601 | 74 | |
el15mh | 2:a488caea1601 | 75 | char d = pad.get_direction(); |
el15mh | 2:a488caea1601 | 76 | |
el15mh | 2:a488caea1601 | 77 | if ((d == NW) || |
el15mh | 2:a488caea1601 | 78 | (d == N) || |
el15mh | 2:a488caea1601 | 79 | (d == NE)){ |
el15mh | 2:a488caea1601 | 80 | |
el15mh | 2:a488caea1601 | 81 | selected -= 1; |
el15mh | 2:a488caea1601 | 82 | } |
el15mh | 2:a488caea1601 | 83 | |
el15mh | 2:a488caea1601 | 84 | if ((d == SW) || |
el15mh | 2:a488caea1601 | 85 | (d == S) || |
el15mh | 2:a488caea1601 | 86 | (d == SE)){ |
el15mh | 2:a488caea1601 | 87 | |
el15mh | 2:a488caea1601 | 88 | selected += 1; |
el15mh | 2:a488caea1601 | 89 | } |
el15mh | 2:a488caea1601 | 90 | |
el15mh | 2:a488caea1601 | 91 | if (pad.check_event(Gamepad::Y_PRESSED)){ |
el15mh | 2:a488caea1601 | 92 | |
el15mh | 2:a488caea1601 | 93 | selected -= 1; |
el15mh | 2:a488caea1601 | 94 | } |
el15mh | 2:a488caea1601 | 95 | |
el15mh | 2:a488caea1601 | 96 | if (pad.check_event(Gamepad::X_PRESSED)){ |
el15mh | 2:a488caea1601 | 97 | |
el15mh | 2:a488caea1601 | 98 | selected += 1; |
el15mh | 0:d7701c5c20e6 | 99 | } |
el15mh | 1:8ce2586b5965 | 100 | |
el15mh | 0:d7701c5c20e6 | 101 | } |
el15mh | 0:d7701c5c20e6 | 102 | } |
el15mh | 0:d7701c5c20e6 | 103 | |
el15mh | 2:a488caea1601 | 104 | |
el15mh | 1:8ce2586b5965 | 105 | void init() |
el15mh | 0:d7701c5c20e6 | 106 | { |
el15mh | 1:8ce2586b5965 | 107 | lcd.init(); |
el15mh | 1:8ce2586b5965 | 108 | pad.init(); |
el15mh | 0:d7701c5c20e6 | 109 | } |
el15mh | 2:a488caea1601 | 110 | |
el15mh | 2:a488caea1601 | 111 | void difficultyOptions() |
el15mh | 2:a488caea1601 | 112 | { |
el15mh | 2:a488caea1601 | 113 | int selected = 0; |
el15mh | 2:a488caea1601 | 114 | int exit = 0; |
el15mh | 2:a488caea1601 | 115 | |
el15mh | 2:a488caea1601 | 116 | while(exit == 0){ |
el15mh | 2:a488caea1601 | 117 | |
el15mh | 2:a488caea1601 | 118 | switch(selected){ |
el15mh | 2:a488caea1601 | 119 | |
el15mh | 2:a488caea1601 | 120 | case 1: |
el15mh | 2:a488caea1601 | 121 | |
el15mh | 2:a488caea1601 | 122 | lcd.clear(); |
el15mh | 2:a488caea1601 | 123 | lcd.printString("Difficulty: ", 0, 0); |
el15mh | 2:a488caea1601 | 124 | lcd.printString(">Easy", 0, 2); |
el15mh | 2:a488caea1601 | 125 | lcd.printString(" Hard", 0, 3); |
el15mh | 2:a488caea1601 | 126 | lcd.refresh(); |
el15mh | 2:a488caea1601 | 127 | |
el15mh | 2:a488caea1601 | 128 | if (pad.check_event(Gamepad::A_PRESSED) || |
el15mh | 2:a488caea1601 | 129 | pad.check_event(Gamepad::JOY_PRESSED)){ |
el15mh | 2:a488caea1601 | 130 | |
el15mh | 2:a488caea1601 | 131 | // maze.mazeIndex = 0; |
el15mh | 2:a488caea1601 | 132 | lcd.clear(); |
el15mh | 2:a488caea1601 | 133 | lcd.printString("Easy mode", 0, 1); |
el15mh | 2:a488caea1601 | 134 | lcd.refresh(); |
el15mh | 2:a488caea1601 | 135 | wait(2); |
el15mh | 2:a488caea1601 | 136 | } |
el15mh | 2:a488caea1601 | 137 | |
el15mh | 2:a488caea1601 | 138 | break; |
el15mh | 2:a488caea1601 | 139 | |
el15mh | 2:a488caea1601 | 140 | case 2: |
el15mh | 2:a488caea1601 | 141 | |
el15mh | 2:a488caea1601 | 142 | lcd.clear(); |
el15mh | 2:a488caea1601 | 143 | lcd.printString("Difficulty: ", 0, 0); |
el15mh | 2:a488caea1601 | 144 | lcd.printString(" Easy", 0, 2); |
el15mh | 2:a488caea1601 | 145 | lcd.printString(">Hard", 0, 3); |
el15mh | 2:a488caea1601 | 146 | lcd.refresh(); |
el15mh | 2:a488caea1601 | 147 | |
el15mh | 2:a488caea1601 | 148 | if (pad.check_event(Gamepad::A_PRESSED) || |
el15mh | 2:a488caea1601 | 149 | pad.check_event(Gamepad::JOY_PRESSED)){ |
el15mh | 2:a488caea1601 | 150 | |
el15mh | 2:a488caea1601 | 151 | // maze.mazeIndex = 1; |
el15mh | 2:a488caea1601 | 152 | lcd.clear(); |
el15mh | 2:a488caea1601 | 153 | lcd.printString("Hard mode", 0, 1); |
el15mh | 2:a488caea1601 | 154 | lcd.refresh(); |
el15mh | 2:a488caea1601 | 155 | wait(2); |
el15mh | 2:a488caea1601 | 156 | } |
el15mh | 2:a488caea1601 | 157 | |
el15mh | 2:a488caea1601 | 158 | break; |
el15mh | 2:a488caea1601 | 159 | |
el15mh | 2:a488caea1601 | 160 | default: |
el15mh | 2:a488caea1601 | 161 | |
el15mh | 2:a488caea1601 | 162 | selected = 1; |
el15mh | 2:a488caea1601 | 163 | |
el15mh | 2:a488caea1601 | 164 | break; |
el15mh | 2:a488caea1601 | 165 | |
el15mh | 2:a488caea1601 | 166 | } |
el15mh | 2:a488caea1601 | 167 | char d = pad.get_direction(); |
el15mh | 2:a488caea1601 | 168 | |
el15mh | 2:a488caea1601 | 169 | if ((d == NW) || |
el15mh | 2:a488caea1601 | 170 | (d == N) || |
el15mh | 2:a488caea1601 | 171 | (d == NE)){ |
el15mh | 2:a488caea1601 | 172 | |
el15mh | 2:a488caea1601 | 173 | selected -= 1; |
el15mh | 2:a488caea1601 | 174 | } |
el15mh | 2:a488caea1601 | 175 | |
el15mh | 2:a488caea1601 | 176 | if ((d == SW) || |
el15mh | 2:a488caea1601 | 177 | (d == S) || |
el15mh | 2:a488caea1601 | 178 | (d == SE)){ |
el15mh | 2:a488caea1601 | 179 | |
el15mh | 2:a488caea1601 | 180 | selected += 1; |
el15mh | 2:a488caea1601 | 181 | } |
el15mh | 2:a488caea1601 | 182 | |
el15mh | 2:a488caea1601 | 183 | |
el15mh | 2:a488caea1601 | 184 | if (pad.check_event(Gamepad::BACK_PRESSED)){ |
el15mh | 2:a488caea1601 | 185 | |
el15mh | 2:a488caea1601 | 186 | exit = 1; |
el15mh | 2:a488caea1601 | 187 | } |
el15mh | 2:a488caea1601 | 188 | |
el15mh | 2:a488caea1601 | 189 | } |
el15mh | 2:a488caea1601 | 190 | } |
el15mh | 2:a488caea1601 | 191 | |
el15mh | 2:a488caea1601 | 192 | void colourOptions() |
el15mh | 2:a488caea1601 | 193 | { |
el15mh | 2:a488caea1601 | 194 | int selected = 0; |
el15mh | 2:a488caea1601 | 195 | int exit = 0; |
el15mh | 2:a488caea1601 | 196 | while(exit == 0){ |
el15mh | 2:a488caea1601 | 197 | |
el15mh | 2:a488caea1601 | 198 | switch(selected){ |
el15mh | 2:a488caea1601 | 199 | |
el15mh | 2:a488caea1601 | 200 | case 1: |
el15mh | 2:a488caea1601 | 201 | |
el15mh | 2:a488caea1601 | 202 | printf("case 2.1"); |
el15mh | 2:a488caea1601 | 203 | |
el15mh | 2:a488caea1601 | 204 | lcd.clear(); |
el15mh | 2:a488caea1601 | 205 | lcd.printString("Ball colour: ", 0, 0); |
el15mh | 2:a488caea1601 | 206 | lcd.printString(">Transparent", 0, 2); |
el15mh | 2:a488caea1601 | 207 | lcd.printString(" Solid", 0, 3); |
el15mh | 2:a488caea1601 | 208 | lcd.refresh(); |
el15mh | 2:a488caea1601 | 209 | |
el15mh | 2:a488caea1601 | 210 | if (pad.check_event(Gamepad::A_PRESSED) || |
el15mh | 2:a488caea1601 | 211 | pad.check_event(Gamepad::JOY_PRESSED)){ |
el15mh | 2:a488caea1601 | 212 | |
el15mh | 2:a488caea1601 | 213 | // ball.ballColour = 0; |
el15mh | 2:a488caea1601 | 214 | lcd.clear(); |
el15mh | 2:a488caea1601 | 215 | lcd.printString("Transparent", 0, 1); |
el15mh | 2:a488caea1601 | 216 | lcd.refresh(); |
el15mh | 2:a488caea1601 | 217 | wait(2); |
el15mh | 2:a488caea1601 | 218 | } |
el15mh | 2:a488caea1601 | 219 | |
el15mh | 2:a488caea1601 | 220 | break; |
el15mh | 2:a488caea1601 | 221 | |
el15mh | 2:a488caea1601 | 222 | case 2: |
el15mh | 2:a488caea1601 | 223 | |
el15mh | 2:a488caea1601 | 224 | printf("case 2.2"); |
el15mh | 2:a488caea1601 | 225 | |
el15mh | 2:a488caea1601 | 226 | lcd.clear(); |
el15mh | 2:a488caea1601 | 227 | lcd.printString("Ball colour: ", 0, 0); |
el15mh | 2:a488caea1601 | 228 | lcd.printString(" Transparent", 0, 2); |
el15mh | 2:a488caea1601 | 229 | lcd.printString(">Solid", 0, 3); |
el15mh | 2:a488caea1601 | 230 | lcd.refresh(); |
el15mh | 2:a488caea1601 | 231 | |
el15mh | 2:a488caea1601 | 232 | if (pad.check_event(Gamepad::A_PRESSED) || |
el15mh | 2:a488caea1601 | 233 | pad.check_event(Gamepad::JOY_PRESSED)){ |
el15mh | 2:a488caea1601 | 234 | |
el15mh | 2:a488caea1601 | 235 | // ball.ballColour = 1; |
el15mh | 2:a488caea1601 | 236 | lcd.clear(); |
el15mh | 2:a488caea1601 | 237 | lcd.printString("Solid", 0, 1); |
el15mh | 2:a488caea1601 | 238 | lcd.refresh(); |
el15mh | 2:a488caea1601 | 239 | wait(2); |
el15mh | 2:a488caea1601 | 240 | } |
el15mh | 2:a488caea1601 | 241 | |
el15mh | 2:a488caea1601 | 242 | break; |
el15mh | 2:a488caea1601 | 243 | |
el15mh | 2:a488caea1601 | 244 | default: |
el15mh | 2:a488caea1601 | 245 | |
el15mh | 2:a488caea1601 | 246 | selected = 1; |
el15mh | 2:a488caea1601 | 247 | |
el15mh | 2:a488caea1601 | 248 | break; |
el15mh | 2:a488caea1601 | 249 | } |
el15mh | 2:a488caea1601 | 250 | |
el15mh | 2:a488caea1601 | 251 | char d = pad.get_direction(); |
el15mh | 2:a488caea1601 | 252 | |
el15mh | 2:a488caea1601 | 253 | if ((d == NW) || |
el15mh | 2:a488caea1601 | 254 | (d == N) || |
el15mh | 2:a488caea1601 | 255 | (d == NE)){ |
el15mh | 2:a488caea1601 | 256 | |
el15mh | 2:a488caea1601 | 257 | selected -= 1; |
el15mh | 2:a488caea1601 | 258 | } |
el15mh | 2:a488caea1601 | 259 | |
el15mh | 2:a488caea1601 | 260 | if ((d == SW) || |
el15mh | 2:a488caea1601 | 261 | (d == S) || |
el15mh | 2:a488caea1601 | 262 | (d == SE)){ |
el15mh | 2:a488caea1601 | 263 | |
el15mh | 2:a488caea1601 | 264 | selected += 1; |
el15mh | 2:a488caea1601 | 265 | } |
el15mh | 2:a488caea1601 | 266 | |
el15mh | 2:a488caea1601 | 267 | if (pad.check_event(Gamepad::BACK_PRESSED)){ |
el15mh | 2:a488caea1601 | 268 | |
el15mh | 2:a488caea1601 | 269 | exit = 1; |
el15mh | 2:a488caea1601 | 270 | } |
el15mh | 2:a488caea1601 | 271 | } |
el15mh | 2:a488caea1601 | 272 | |
el15mh | 2:a488caea1601 | 273 | } |
el15mh | 2:a488caea1601 | 274 | |
el15mh | 2:a488caea1601 | 275 | |
el15mh | 2:a488caea1601 | 276 |