ELEC2645 (2016/17) / Mbed 2 deprecated Bomb_WeixiTao_el16wt

Dependencies:   mbed

Committer:
weixitao
Date:
Mon May 01 15:20:26 2017 +0000
Revision:
1:83459533ff72
Parent:
0:1465fd20e75b
Child:
2:23b20cbd3330
until welcome

Who changed what in which revision?

UserRevisionLine numberNew contents of line
weixitao 0:1465fd20e75b 1 #include "mbed.h"
weixitao 0:1465fd20e75b 2 #include "N5110.h"
weixitao 0:1465fd20e75b 3 #include "Gamepad.h"
weixitao 0:1465fd20e75b 4 #include "Treasure.h"
weixitao 0:1465fd20e75b 5 #include "hole.h"
weixitao 1:83459533ff72 6 #include "human.h"
weixitao 1:83459533ff72 7 #include "interface.h"
weixitao 1:83459533ff72 8
weixitao 0:1465fd20e75b 9
weixitao 0:1465fd20e75b 10
weixitao 0:1465fd20e75b 11 N5110 lcd(PTC9,PTC0,PTC7,PTD2,PTD1,PTC11);
weixitao 0:1465fd20e75b 12 Gamepad pad;
weixitao 0:1465fd20e75b 13 Treasure treasure;
weixitao 0:1465fd20e75b 14 hole Blackhole;
weixitao 1:83459533ff72 15 human person;
weixitao 1:83459533ff72 16 interface Interface;
weixitao 0:1465fd20e75b 17
weixitao 0:1465fd20e75b 18
weixitao 1:83459533ff72 19 void bool_check();
weixitao 1:83459533ff72 20 void A_bomb();
weixitao 1:83459533ff72 21 void B_bomb();
weixitao 1:83459533ff72 22 void X_bomb();
weixitao 1:83459533ff72 23 void Y_bomb();
weixitao 1:83459533ff72 24 void end();
weixitao 1:83459533ff72 25 void welcome();
weixitao 1:83459533ff72 26 void render();
weixitao 1:83459533ff72 27
weixitao 1:83459533ff72 28
weixitao 1:83459533ff72 29 void welcome() {
weixitao 1:83459533ff72 30
weixitao 1:83459533ff72 31 lcd.printString(" Bomb! ",0,1);
weixitao 1:83459533ff72 32 lcd.printString(" Press Start ",0,4);
weixitao 1:83459533ff72 33 lcd.refresh();
weixitao 1:83459533ff72 34
weixitao 1:83459533ff72 35 // wait flashing LEDs until start button is pressed
weixitao 1:83459533ff72 36 while ( pad.check_event(Gamepad::START_PRESSED) == false) {
weixitao 1:83459533ff72 37 pad.leds_on();
weixitao 1:83459533ff72 38 wait(0.1);
weixitao 1:83459533ff72 39 pad.leds_off();
weixitao 1:83459533ff72 40 wait(0.1);
weixitao 1:83459533ff72 41 }
weixitao 1:83459533ff72 42
weixitao 1:83459533ff72 43 }
weixitao 1:83459533ff72 44
weixitao 1:83459533ff72 45 void render()
weixitao 1:83459533ff72 46 {
weixitao 1:83459533ff72 47 // clear screen, re-draw and refresh
weixitao 1:83459533ff72 48 lcd.clear();
weixitao 1:83459533ff72 49
weixitao 1:83459533ff72 50 lcd.refresh();
weixitao 1:83459533ff72 51 }
weixitao 1:83459533ff72 52
weixitao 0:1465fd20e75b 53 int main()
weixitao 0:1465fd20e75b 54 {
weixitao 1:83459533ff72 55 double x;
weixitao 1:83459533ff72 56 double y;
weixitao 1:83459533ff72 57
weixitao 0:1465fd20e75b 58 lcd.init();
weixitao 0:1465fd20e75b 59 pad.init();
weixitao 0:1465fd20e75b 60 lcd.clear();
weixitao 0:1465fd20e75b 61 lcd.normalMode(); // normal colour mode
weixitao 0:1465fd20e75b 62 lcd.setBrightness(0.5); // put LED backlight on 50%
weixitao 1:83459533ff72 63
weixitao 1:83459533ff72 64
weixitao 0:1465fd20e75b 65 treasure.treasure_place();
weixitao 0:1465fd20e75b 66 Blackhole.hole_place();
weixitao 1:83459533ff72 67
weixitao 1:83459533ff72 68 //printf("First stage\n");
weixitao 1:83459533ff72 69
weixitao 1:83459533ff72 70 welcome();
weixitao 1:83459533ff72 71
weixitao 1:83459533ff72 72
weixitao 1:83459533ff72 73 while (1) {
weixitao 1:83459533ff72 74 //
weixitao 1:83459533ff72 75
weixitao 1:83459533ff72 76 int four = ((rand())%4)+1;
weixitao 1:83459533ff72 77 printf("%i\n", four);
weixitao 1:83459533ff72 78 x = person.humanX();
weixitao 1:83459533ff72 79 //printf("Pass one ");
weixitao 1:83459533ff72 80 y = person.humanY();
weixitao 1:83459533ff72 81 //printf("Pass two");
weixitao 1:83459533ff72 82 person.print_human();
weixitao 1:83459533ff72 83
weixitao 1:83459533ff72 84 Blackhole.hole_show();
weixitao 1:83459533ff72 85 lcd.refresh();
weixitao 1:83459533ff72 86 lcd.clear();
weixitao 0:1465fd20e75b 87
weixitao 0:1465fd20e75b 88
weixitao 1:83459533ff72 89 printf("check 1\n");
weixitao 1:83459533ff72 90 bool check = Blackhole.test(x,y);
weixitao 1:83459533ff72 91 printf("%i\n",four);
weixitao 1:83459533ff72 92 if( pad.check_event(Gamepad::R_PRESSED) == true && check )
weixitao 1:83459533ff72 93 {
weixitao 1:83459533ff72 94 printf("taoweixi");
weixitao 1:83459533ff72 95 switch (four){
weixitao 1:83459533ff72 96
weixitao 1:83459533ff72 97 case 1 :
weixitao 1:83459533ff72 98 printf ("bomb_A\n");
weixitao 1:83459533ff72 99 A_bomb();
weixitao 1:83459533ff72 100
weixitao 1:83459533ff72 101 break;
weixitao 1:83459533ff72 102 case 2 : B_bomb();
weixitao 1:83459533ff72 103 printf ("bomb_B");
weixitao 1:83459533ff72 104
weixitao 1:83459533ff72 105 break;
weixitao 1:83459533ff72 106 case 3 : X_bomb();
weixitao 1:83459533ff72 107 printf ("bomb_X");
weixitao 1:83459533ff72 108
weixitao 1:83459533ff72 109 break;
weixitao 1:83459533ff72 110 case 4 : Y_bomb();
weixitao 1:83459533ff72 111 printf ("bomb_Y");
weixitao 1:83459533ff72 112
weixitao 1:83459533ff72 113 break;
weixitao 1:83459533ff72 114 }
weixitao 1:83459533ff72 115
weixitao 1:83459533ff72 116
weixitao 1:83459533ff72 117
weixitao 0:1465fd20e75b 118 }
weixitao 0:1465fd20e75b 119 lcd.refresh();
weixitao 1:83459533ff72 120 lcd.clear();
weixitao 1:83459533ff72 121 }
weixitao 1:83459533ff72 122
weixitao 1:83459533ff72 123 }
weixitao 1:83459533ff72 124
weixitao 1:83459533ff72 125 void bool_check()
weixitao 1:83459533ff72 126 {
weixitao 1:83459533ff72 127
weixitao 1:83459533ff72 128 }
weixitao 1:83459533ff72 129
weixitao 1:83459533ff72 130 void A_bomb()
weixitao 1:83459533ff72 131 {
weixitao 1:83459533ff72 132 bool first = true;
weixitao 1:83459533ff72 133 bool second = true;
weixitao 1:83459533ff72 134 bool third = true;
weixitao 1:83459533ff72 135 bool fourth = true;
weixitao 1:83459533ff72 136
weixitao 1:83459533ff72 137 bool check1 = false;
weixitao 1:83459533ff72 138 bool check2 = false;
weixitao 1:83459533ff72 139 bool check3 = false;
weixitao 1:83459533ff72 140
weixitao 1:83459533ff72 141 bool_check();
weixitao 1:83459533ff72 142 while(1)
weixitao 1:83459533ff72 143 {
weixitao 1:83459533ff72 144 if(pad.check_event(Gamepad::B_PRESSED) == true)
weixitao 1:83459533ff72 145 {
weixitao 1:83459533ff72 146 second = false;
weixitao 1:83459533ff72 147 check1 = true;
weixitao 1:83459533ff72 148 }
weixitao 1:83459533ff72 149 else if(pad.check_event(Gamepad::X_PRESSED) == true)
weixitao 1:83459533ff72 150 {
weixitao 1:83459533ff72 151 third = false;
weixitao 1:83459533ff72 152 check2 = true;
weixitao 1:83459533ff72 153 }
weixitao 1:83459533ff72 154 else if(pad.check_event(Gamepad::Y_PRESSED) == true)
weixitao 1:83459533ff72 155 {
weixitao 1:83459533ff72 156 fourth = false;
weixitao 1:83459533ff72 157 check3 = true;
weixitao 1:83459533ff72 158 }
weixitao 1:83459533ff72 159 else if(pad.check_event(Gamepad::A_PRESSED) == true) // bomb A
weixitao 1:83459533ff72 160 {
weixitao 1:83459533ff72 161 end();
weixitao 1:83459533ff72 162 }
weixitao 1:83459533ff72 163 lcd.refresh();
weixitao 1:83459533ff72 164 lcd.clear();
weixitao 1:83459533ff72 165 if(first)
weixitao 1:83459533ff72 166 {
weixitao 1:83459533ff72 167 Interface.A();
weixitao 1:83459533ff72 168 }
weixitao 1:83459533ff72 169 if(second)
weixitao 1:83459533ff72 170 {
weixitao 1:83459533ff72 171 Interface.B();
weixitao 1:83459533ff72 172
weixitao 1:83459533ff72 173 }
weixitao 1:83459533ff72 174 if(third)
weixitao 1:83459533ff72 175 {
weixitao 1:83459533ff72 176 Interface.X();
weixitao 1:83459533ff72 177
weixitao 1:83459533ff72 178 }
weixitao 1:83459533ff72 179 if(fourth)
weixitao 1:83459533ff72 180 {
weixitao 1:83459533ff72 181 Interface.Y();
weixitao 1:83459533ff72 182 }
weixitao 1:83459533ff72 183 if(check1 && check2 && check3)
weixitao 1:83459533ff72 184 {
weixitao 1:83459533ff72 185 main();
weixitao 1:83459533ff72 186 }
weixitao 1:83459533ff72 187 Interface.border();
weixitao 1:83459533ff72 188 lcd.refresh();
weixitao 1:83459533ff72 189 lcd.clear();
weixitao 1:83459533ff72 190 } // end of A press
weixitao 1:83459533ff72 191 }
weixitao 0:1465fd20e75b 192
weixitao 0:1465fd20e75b 193
weixitao 1:83459533ff72 194 void B_bomb()
weixitao 1:83459533ff72 195 {
weixitao 1:83459533ff72 196 bool first = true;
weixitao 1:83459533ff72 197 bool second = true;
weixitao 1:83459533ff72 198 bool third = true;
weixitao 1:83459533ff72 199 bool fourth = true;
weixitao 1:83459533ff72 200
weixitao 1:83459533ff72 201 bool check1 = false;
weixitao 1:83459533ff72 202 bool check2 = false;
weixitao 1:83459533ff72 203 bool check3 = false;
weixitao 1:83459533ff72 204
weixitao 1:83459533ff72 205 bool_check();
weixitao 1:83459533ff72 206 while(1)
weixitao 1:83459533ff72 207 {
weixitao 1:83459533ff72 208 if(pad.check_event(Gamepad::A_PRESSED) == true)
weixitao 1:83459533ff72 209 {
weixitao 1:83459533ff72 210 second = false;
weixitao 1:83459533ff72 211 check1 = true;
weixitao 1:83459533ff72 212 }
weixitao 1:83459533ff72 213 else if(pad.check_event(Gamepad::X_PRESSED) == true)
weixitao 1:83459533ff72 214 {
weixitao 1:83459533ff72 215 third = false;
weixitao 1:83459533ff72 216 check2 = true;
weixitao 1:83459533ff72 217 }
weixitao 1:83459533ff72 218 else if(pad.check_event(Gamepad::Y_PRESSED) == true)
weixitao 1:83459533ff72 219 {
weixitao 1:83459533ff72 220 fourth = false;
weixitao 1:83459533ff72 221 check3 = true;
weixitao 1:83459533ff72 222 }
weixitao 1:83459533ff72 223 else if(pad.check_event(Gamepad::B_PRESSED) == true) // bomb B
weixitao 1:83459533ff72 224 {
weixitao 1:83459533ff72 225 end();
weixitao 1:83459533ff72 226 }
weixitao 1:83459533ff72 227 lcd.refresh();
weixitao 1:83459533ff72 228 lcd.clear();
weixitao 1:83459533ff72 229 if(first)
weixitao 1:83459533ff72 230 {
weixitao 1:83459533ff72 231 Interface.B();
weixitao 1:83459533ff72 232 }
weixitao 1:83459533ff72 233 if(second)
weixitao 1:83459533ff72 234 {
weixitao 1:83459533ff72 235 Interface.A();
weixitao 1:83459533ff72 236
weixitao 1:83459533ff72 237 }
weixitao 1:83459533ff72 238 if(third)
weixitao 1:83459533ff72 239 {
weixitao 1:83459533ff72 240 Interface.X();
weixitao 0:1465fd20e75b 241
weixitao 1:83459533ff72 242 }
weixitao 1:83459533ff72 243 if(fourth)
weixitao 1:83459533ff72 244 {
weixitao 1:83459533ff72 245 Interface.Y();
weixitao 1:83459533ff72 246 }
weixitao 1:83459533ff72 247 if(check1 && check2 && check3)
weixitao 1:83459533ff72 248 {
weixitao 1:83459533ff72 249 main();
weixitao 1:83459533ff72 250 }
weixitao 1:83459533ff72 251 Interface.border();
weixitao 1:83459533ff72 252 lcd.refresh();
weixitao 1:83459533ff72 253 lcd.clear();
weixitao 1:83459533ff72 254 } // end of B press
weixitao 1:83459533ff72 255 }
weixitao 1:83459533ff72 256
weixitao 1:83459533ff72 257 void X_bomb()
weixitao 1:83459533ff72 258 {
weixitao 1:83459533ff72 259 bool first = true;
weixitao 1:83459533ff72 260 bool second = true;
weixitao 1:83459533ff72 261 bool third = true;
weixitao 1:83459533ff72 262 bool fourth = true;
weixitao 1:83459533ff72 263
weixitao 1:83459533ff72 264 bool check1 = false;
weixitao 1:83459533ff72 265 bool check2 = false;
weixitao 1:83459533ff72 266 bool check3 = false;
weixitao 1:83459533ff72 267
weixitao 1:83459533ff72 268 bool_check();
weixitao 1:83459533ff72 269 while(1)
weixitao 1:83459533ff72 270 {
weixitao 1:83459533ff72 271 if(pad.check_event(Gamepad::A_PRESSED) == true)
weixitao 1:83459533ff72 272 {
weixitao 1:83459533ff72 273 second = false;
weixitao 1:83459533ff72 274 check1 = true;
weixitao 1:83459533ff72 275 }
weixitao 1:83459533ff72 276 else if(pad.check_event(Gamepad::B_PRESSED) == true)
weixitao 1:83459533ff72 277 {
weixitao 1:83459533ff72 278 third = false;
weixitao 1:83459533ff72 279 check2 = true;
weixitao 1:83459533ff72 280 }
weixitao 1:83459533ff72 281 else if(pad.check_event(Gamepad::Y_PRESSED) == true)
weixitao 1:83459533ff72 282 {
weixitao 1:83459533ff72 283 fourth = false;
weixitao 1:83459533ff72 284 check3 = true;
weixitao 1:83459533ff72 285 }
weixitao 1:83459533ff72 286 else if(pad.check_event(Gamepad::X_PRESSED) == true) // bomb X
weixitao 1:83459533ff72 287 {
weixitao 1:83459533ff72 288 end();
weixitao 1:83459533ff72 289 }
weixitao 1:83459533ff72 290 lcd.refresh();
weixitao 1:83459533ff72 291 lcd.clear();
weixitao 1:83459533ff72 292 if(first)
weixitao 1:83459533ff72 293 {
weixitao 1:83459533ff72 294 Interface.X();
weixitao 1:83459533ff72 295 }
weixitao 1:83459533ff72 296 if(second)
weixitao 1:83459533ff72 297 {
weixitao 1:83459533ff72 298 Interface.A();
weixitao 1:83459533ff72 299
weixitao 1:83459533ff72 300 }
weixitao 1:83459533ff72 301 if(third)
weixitao 1:83459533ff72 302 {
weixitao 1:83459533ff72 303 Interface.B();
weixitao 1:83459533ff72 304
weixitao 1:83459533ff72 305 }
weixitao 1:83459533ff72 306 if(fourth)
weixitao 1:83459533ff72 307 {
weixitao 1:83459533ff72 308 Interface.Y();
weixitao 1:83459533ff72 309 }
weixitao 1:83459533ff72 310 if(check1 && check2 && check3)
weixitao 1:83459533ff72 311 {
weixitao 1:83459533ff72 312 main();
weixitao 1:83459533ff72 313 }
weixitao 1:83459533ff72 314 Interface.border();
weixitao 1:83459533ff72 315 lcd.refresh();
weixitao 1:83459533ff72 316 lcd.clear();
weixitao 1:83459533ff72 317 } // end of X press
weixitao 1:83459533ff72 318 }
weixitao 1:83459533ff72 319
weixitao 1:83459533ff72 320 void Y_bomb()
weixitao 1:83459533ff72 321 {
weixitao 1:83459533ff72 322 bool first = true;
weixitao 1:83459533ff72 323 bool second = true;
weixitao 1:83459533ff72 324 bool third = true;
weixitao 1:83459533ff72 325 bool fourth = true;
weixitao 1:83459533ff72 326
weixitao 1:83459533ff72 327 bool check1 = false;
weixitao 1:83459533ff72 328 bool check2 = false;
weixitao 1:83459533ff72 329 bool check3 = false;
weixitao 1:83459533ff72 330
weixitao 1:83459533ff72 331 bool_check();
weixitao 1:83459533ff72 332 while(1)
weixitao 1:83459533ff72 333 {
weixitao 1:83459533ff72 334 if(pad.check_event(Gamepad::A_PRESSED) == true)
weixitao 1:83459533ff72 335 {
weixitao 1:83459533ff72 336 second = false;
weixitao 1:83459533ff72 337 check1 = true;
weixitao 1:83459533ff72 338 }
weixitao 1:83459533ff72 339 else if(pad.check_event(Gamepad::B_PRESSED) == true)
weixitao 1:83459533ff72 340 {
weixitao 1:83459533ff72 341 third = false;
weixitao 1:83459533ff72 342 check2 = true;
weixitao 1:83459533ff72 343 }
weixitao 1:83459533ff72 344 else if(pad.check_event(Gamepad::X_PRESSED) == true)
weixitao 1:83459533ff72 345 {
weixitao 1:83459533ff72 346 fourth = false;
weixitao 1:83459533ff72 347 check3 = true;
weixitao 1:83459533ff72 348 }
weixitao 1:83459533ff72 349 else if(pad.check_event(Gamepad::Y_PRESSED) == true) // bomb Y
weixitao 1:83459533ff72 350 {
weixitao 1:83459533ff72 351 end();
weixitao 1:83459533ff72 352 }
weixitao 1:83459533ff72 353 lcd.refresh();
weixitao 1:83459533ff72 354 lcd.clear();
weixitao 1:83459533ff72 355 if(first)
weixitao 1:83459533ff72 356 {
weixitao 1:83459533ff72 357 Interface.Y();
weixitao 1:83459533ff72 358 }
weixitao 1:83459533ff72 359 if(second)
weixitao 1:83459533ff72 360 {
weixitao 1:83459533ff72 361 Interface.A();
weixitao 1:83459533ff72 362
weixitao 1:83459533ff72 363 }
weixitao 1:83459533ff72 364 if(third)
weixitao 1:83459533ff72 365 {
weixitao 1:83459533ff72 366 Interface.B();
weixitao 1:83459533ff72 367
weixitao 1:83459533ff72 368 }
weixitao 1:83459533ff72 369 if(fourth)
weixitao 1:83459533ff72 370 {
weixitao 1:83459533ff72 371 Interface.X();
weixitao 1:83459533ff72 372 }
weixitao 1:83459533ff72 373 if(check1 && check2 && check3)
weixitao 1:83459533ff72 374 {
weixitao 1:83459533ff72 375 main();
weixitao 1:83459533ff72 376 }
weixitao 1:83459533ff72 377 Interface.border();
weixitao 1:83459533ff72 378 lcd.refresh();
weixitao 1:83459533ff72 379 lcd.clear();
weixitao 1:83459533ff72 380 } // end of Y press
weixitao 1:83459533ff72 381 }
weixitao 1:83459533ff72 382
weixitao 1:83459533ff72 383 void end()
weixitao 1:83459533ff72 384 {
weixitao 1:83459533ff72 385 while (1){
weixitao 1:83459533ff72 386
weixitao 1:83459533ff72 387 lcd.printString(" Game Over ",0,2);
weixitao 1:83459533ff72 388 lcd.refresh();
weixitao 1:83459533ff72 389 lcd.clear();
weixitao 1:83459533ff72 390 }
weixitao 1:83459533ff72 391 }
weixitao 1:83459533ff72 392
weixitao 1:83459533ff72 393
weixitao 1:83459533ff72 394
weixitao 1:83459533ff72 395
weixitao 1:83459533ff72 396