Dependencies:   mbed

Committer:
alexliu0812
Date:
Sun May 17 01:17:23 2020 +0000
Revision:
5:b5c95c7a5302
Parent:
4:aada5ebb075d
Child:
9:50470a40d213
done! need wiki

Who changed what in which revision?

UserRevisionLine numberNew contents of line
alexliu0812 2:d621a4cbe0c2 1 #include "DodgeEngine.h"
alexliu0812 3:e53e289cd4ba 2
alexliu0812 2:d621a4cbe0c2 3
alexliu0812 2:d621a4cbe0c2 4 DodgeEngine::DodgeEngine(){}
alexliu0812 2:d621a4cbe0c2 5 DodgeEngine::~DodgeEngine(){}
alexliu0812 2:d621a4cbe0c2 6
alexliu0812 4:aada5ebb075d 7 void DodgeEngine::init(int x1up, int y1up, int x1down, int y1down, int x2up, int y2up, int x2down, int y2down, int manx, int many){
alexliu0812 2:d621a4cbe0c2 8
alexliu0812 3:e53e289cd4ba 9 block.blockinit(x1up, y1up, x1down, y1down, x2up, y2up,x2down,y2down);
alexliu0812 4:aada5ebb075d 10 character.charinit(manx, many);
alexliu0812 2:d621a4cbe0c2 11 }
alexliu0812 2:d621a4cbe0c2 12
alexliu0812 2:d621a4cbe0c2 13 void DodgeEngine::charactermove(N5110 &lcd,Gamepad &pad){
alexliu0812 2:d621a4cbe0c2 14
alexliu0812 2:d621a4cbe0c2 15 character.move_up(pad);
alexliu0812 2:d621a4cbe0c2 16 character.move_down();
alexliu0812 2:d621a4cbe0c2 17 character.boundry();
alexliu0812 2:d621a4cbe0c2 18 character.draw(lcd);
alexliu0812 2:d621a4cbe0c2 19
alexliu0812 2:d621a4cbe0c2 20 }
alexliu0812 2:d621a4cbe0c2 21
alexliu0812 2:d621a4cbe0c2 22 void DodgeEngine::blockmove(N5110 &lcd){
alexliu0812 2:d621a4cbe0c2 23
alexliu0812 2:d621a4cbe0c2 24 block.draw_block(lcd);
alexliu0812 2:d621a4cbe0c2 25
alexliu0812 2:d621a4cbe0c2 26 }
alexliu0812 2:d621a4cbe0c2 27
alexliu0812 4:aada5ebb075d 28 void DodgeEngine::dodgeupdate(N5110 &lcd, Gamepad &pad,int x1up, int y1up, int x1down, int y1down, int x2up, int y2up, int x2down, int y2down, int manx, int many){
alexliu0812 4:aada5ebb075d 29
alexliu0812 4:aada5ebb075d 30
alexliu0812 4:aada5ebb075d 31 check_crash(lcd,pad,x1up, y1up, x1down, y1down, x2up, y2up,x2down,y2down,manx, many);
alexliu0812 4:aada5ebb075d 32 show_score(lcd);
alexliu0812 4:aada5ebb075d 33
alexliu0812 4:aada5ebb075d 34 int updatescore;
alexliu0812 4:aada5ebb075d 35 updatescore = block.get_score();
alexliu0812 4:aada5ebb075d 36
alexliu0812 4:aada5ebb075d 37 if(updatescore > 39){
alexliu0812 4:aada5ebb075d 38 pass_game(lcd,pad);
alexliu0812 4:aada5ebb075d 39 }
alexliu0812 4:aada5ebb075d 40
alexliu0812 4:aada5ebb075d 41
alexliu0812 4:aada5ebb075d 42 if(updatescore > 9 && updatescore < 20){
alexliu0812 4:aada5ebb075d 43 block.blockupgrate2();
alexliu0812 4:aada5ebb075d 44 }
alexliu0812 4:aada5ebb075d 45 else if(updatescore > 19 &&updatescore <30){
alexliu0812 4:aada5ebb075d 46 block.blockupgrate3();
alexliu0812 4:aada5ebb075d 47 }
alexliu0812 4:aada5ebb075d 48 else if(updatescore > 29 &&updatescore <40){
alexliu0812 4:aada5ebb075d 49 block.blockupgrate4();
alexliu0812 4:aada5ebb075d 50 }
alexliu0812 4:aada5ebb075d 51 else{
alexliu0812 4:aada5ebb075d 52 block.blockupgrate();
alexliu0812 4:aada5ebb075d 53 }
alexliu0812 5:b5c95c7a5302 54
alexliu0812 5:b5c95c7a5302 55
alexliu0812 5:b5c95c7a5302 56 block.y_update();
alexliu0812 4:aada5ebb075d 57
alexliu0812 4:aada5ebb075d 58
alexliu0812 4:aada5ebb075d 59
alexliu0812 2:d621a4cbe0c2 60 }
alexliu0812 3:e53e289cd4ba 61
alexliu0812 4:aada5ebb075d 62 void DodgeEngine::check_crash(N5110 &lcd, Gamepad &pad,int x1up, int y1up, int x1down, int y1down, int x2up, int y2up, int x2down, int y2down, int manx, int many){
alexliu0812 4:aada5ebb075d 63 Vector2D characterposition = character.get_char_position();
alexliu0812 4:aada5ebb075d 64 Vector2D upperlimit = block.getposition2();
alexliu0812 4:aada5ebb075d 65 Vector2D lowerlimit = block.getposition3();
alexliu0812 4:aada5ebb075d 66
alexliu0812 4:aada5ebb075d 67 //check if character has fall on the ground
alexliu0812 4:aada5ebb075d 68 if(characterposition.y > 35){
alexliu0812 4:aada5ebb075d 69
alexliu0812 4:aada5ebb075d 70 //audio and led feedback
alexliu0812 4:aada5ebb075d 71 pad.tone(500.0,0.5);
alexliu0812 4:aada5ebb075d 72 pad.leds_on();
alexliu0812 4:aada5ebb075d 73 wait(0.1);
alexliu0812 4:aada5ebb075d 74 pad.leds_off();
alexliu0812 4:aada5ebb075d 75 print_score(lcd,pad,x1up, y1up, x1down, y1down, x2up, y2up,x2down,y2down,manx, many);
alexliu0812 4:aada5ebb075d 76
alexliu0812 4:aada5ebb075d 77 }
alexliu0812 4:aada5ebb075d 78 //check if character has crash on the wall
alexliu0812 4:aada5ebb075d 79 if(upperlimit.x > 15 && upperlimit.x < 26){
alexliu0812 4:aada5ebb075d 80
alexliu0812 4:aada5ebb075d 81 if(characterposition.y < upperlimit.y || characterposition.y + 11 > lowerlimit.y ){
alexliu0812 4:aada5ebb075d 82
alexliu0812 4:aada5ebb075d 83 pad.leds_on();
alexliu0812 4:aada5ebb075d 84 pad.tone(500.0,0.5);
alexliu0812 4:aada5ebb075d 85 print_score(lcd,pad,x1up, y1up, x1down, y1down, x2up, y2up,x2down,y2down,manx, many);
alexliu0812 4:aada5ebb075d 86 }
alexliu0812 4:aada5ebb075d 87 }
alexliu0812 4:aada5ebb075d 88
alexliu0812 4:aada5ebb075d 89 int check_crash_score;
alexliu0812 4:aada5ebb075d 90 check_crash_score = block.get_score();
alexliu0812 4:aada5ebb075d 91
alexliu0812 4:aada5ebb075d 92 if(check_crash_score < 10){
alexliu0812 4:aada5ebb075d 93 if(upperlimit.x > 13 && upperlimit.x < 15){
alexliu0812 4:aada5ebb075d 94 block.add_score();
alexliu0812 4:aada5ebb075d 95 }
alexliu0812 4:aada5ebb075d 96 }
alexliu0812 4:aada5ebb075d 97 else if(check_crash_score >9 && check_crash_score < 20){
alexliu0812 4:aada5ebb075d 98 if(upperlimit.x > 12 && upperlimit.x < 15){
alexliu0812 4:aada5ebb075d 99 block.add_score();
alexliu0812 4:aada5ebb075d 100 }
alexliu0812 4:aada5ebb075d 101 }
alexliu0812 4:aada5ebb075d 102 else if(check_crash_score >19 && check_crash_score < 30){
alexliu0812 4:aada5ebb075d 103 if(upperlimit.x > 11 && upperlimit.x < 15){
alexliu0812 4:aada5ebb075d 104 block.add_score();
alexliu0812 4:aada5ebb075d 105 }
alexliu0812 4:aada5ebb075d 106 }
alexliu0812 4:aada5ebb075d 107 else{
alexliu0812 4:aada5ebb075d 108 if(upperlimit.x > 10 && upperlimit.x < 15){
alexliu0812 4:aada5ebb075d 109 block.add_score();
alexliu0812 4:aada5ebb075d 110 }
alexliu0812 3:e53e289cd4ba 111
alexliu0812 4:aada5ebb075d 112 }
alexliu0812 4:aada5ebb075d 113
alexliu0812 4:aada5ebb075d 114 }
alexliu0812 4:aada5ebb075d 115
alexliu0812 4:aada5ebb075d 116 void DodgeEngine::print_score(N5110 &lcd, Gamepad &pad,int x1up, int y1up, int x1down, int y1down, int x2up, int y2up, int x2down, int y2down, int manx, int many){
alexliu0812 4:aada5ebb075d 117
alexliu0812 4:aada5ebb075d 118
alexliu0812 4:aada5ebb075d 119 int finalscore = block.get_score();
alexliu0812 4:aada5ebb075d 120 lcd.clear();
alexliu0812 4:aada5ebb075d 121 char score[14];
alexliu0812 4:aada5ebb075d 122 while(pad.B_pressed() == false){
alexliu0812 4:aada5ebb075d 123 sprintf(score, "%2d score!", finalscore);
alexliu0812 4:aada5ebb075d 124 lcd.printString("Finally...",1,0);
alexliu0812 4:aada5ebb075d 125 lcd.printString("You achieved",1,1);
alexliu0812 4:aada5ebb075d 126 lcd.printString(score,1,2);
alexliu0812 4:aada5ebb075d 127 lcd.printString("Try again?",1,3);
alexliu0812 4:aada5ebb075d 128 lcd.printString("press B",1,4);
alexliu0812 4:aada5ebb075d 129 pad.leds_on();
alexliu0812 4:aada5ebb075d 130 wait(0.1);
alexliu0812 4:aada5ebb075d 131 pad.leds_off();
alexliu0812 4:aada5ebb075d 132 wait(0.1);
alexliu0812 4:aada5ebb075d 133 lcd.refresh();
alexliu0812 4:aada5ebb075d 134 }
alexliu0812 4:aada5ebb075d 135 lcd.clear();
alexliu0812 4:aada5ebb075d 136 init(x1up, y1up, x1down, y1down, x2up, y2up,x2down,y2down,manx, many);
alexliu0812 4:aada5ebb075d 137
alexliu0812 4:aada5ebb075d 138 }
alexliu0812 4:aada5ebb075d 139
alexliu0812 4:aada5ebb075d 140 void DodgeEngine::show_score(N5110 &lcd){
alexliu0812 4:aada5ebb075d 141
alexliu0812 4:aada5ebb075d 142 int showscore = block.get_score();
alexliu0812 4:aada5ebb075d 143 char score2[10];
alexliu0812 4:aada5ebb075d 144 sprintf(score2, "%2d", showscore);
alexliu0812 4:aada5ebb075d 145 lcd.printString(score2,0,0);
alexliu0812 4:aada5ebb075d 146 lcd.refresh();
alexliu0812 4:aada5ebb075d 147
alexliu0812 4:aada5ebb075d 148 }
alexliu0812 4:aada5ebb075d 149
alexliu0812 4:aada5ebb075d 150 void DodgeEngine::pass_game(N5110 &lcd, Gamepad &pad){
alexliu0812 4:aada5ebb075d 151
alexliu0812 4:aada5ebb075d 152 lcd.clear();
alexliu0812 4:aada5ebb075d 153 while(pad.B_pressed() == false){
alexliu0812 4:aada5ebb075d 154 lcd.printString("Congratulation",1,1);
alexliu0812 4:aada5ebb075d 155 lcd.printString("All level pass",1,2);
alexliu0812 4:aada5ebb075d 156 lcd.printString(" Try Again? ",1,4);
alexliu0812 4:aada5ebb075d 157 lcd.printString(" Press B ",1,5);
alexliu0812 4:aada5ebb075d 158 pad.leds_on();
alexliu0812 4:aada5ebb075d 159 wait(0.1);
alexliu0812 4:aada5ebb075d 160 pad.leds_off();
alexliu0812 4:aada5ebb075d 161 wait(0.1);
alexliu0812 4:aada5ebb075d 162 lcd.refresh();
alexliu0812 4:aada5ebb075d 163 }
alexliu0812 4:aada5ebb075d 164 }
alexliu0812 2:d621a4cbe0c2 165