201377806 ZiWei Liu

Dependencies:   mbed

Committer:
alexliu0812
Date:
Mon May 18 02:31:16 2020 +0000
Revision:
9:50470a40d213
Parent:
5:b5c95c7a5302
Child:
10:2beb88c61882
without fianl 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 9:50470a40d213 43 //int test1 = 1;
alexliu0812 4:aada5ebb075d 44 block.blockupgrate2();
alexliu0812 4:aada5ebb075d 45 }
alexliu0812 4:aada5ebb075d 46 else if(updatescore > 19 &&updatescore <30){
alexliu0812 9:50470a40d213 47 //int test1 = 2;
alexliu0812 4:aada5ebb075d 48 block.blockupgrate3();
alexliu0812 4:aada5ebb075d 49 }
alexliu0812 4:aada5ebb075d 50 else if(updatescore > 29 &&updatescore <40){
alexliu0812 9:50470a40d213 51 //int test1 = 3;
alexliu0812 4:aada5ebb075d 52 block.blockupgrate4();
alexliu0812 4:aada5ebb075d 53 }
alexliu0812 4:aada5ebb075d 54 else{
alexliu0812 9:50470a40d213 55 //int test1 =4;
alexliu0812 4:aada5ebb075d 56 block.blockupgrate();
alexliu0812 4:aada5ebb075d 57 }
alexliu0812 9:50470a40d213 58 //printf("the level is at = %d\n",test1);
alexliu0812 5:b5c95c7a5302 59
alexliu0812 5:b5c95c7a5302 60 block.y_update();
alexliu0812 4:aada5ebb075d 61
alexliu0812 4:aada5ebb075d 62
alexliu0812 4:aada5ebb075d 63
alexliu0812 2:d621a4cbe0c2 64 }
alexliu0812 3:e53e289cd4ba 65
alexliu0812 4:aada5ebb075d 66 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 67 Vector2D characterposition = character.get_char_position();
alexliu0812 4:aada5ebb075d 68 Vector2D upperlimit = block.getposition2();
alexliu0812 4:aada5ebb075d 69 Vector2D lowerlimit = block.getposition3();
alexliu0812 4:aada5ebb075d 70
alexliu0812 4:aada5ebb075d 71 //check if character has fall on the ground
alexliu0812 4:aada5ebb075d 72 if(characterposition.y > 35){
alexliu0812 4:aada5ebb075d 73
alexliu0812 4:aada5ebb075d 74 //audio and led feedback
alexliu0812 4:aada5ebb075d 75 pad.tone(500.0,0.5);
alexliu0812 4:aada5ebb075d 76 pad.leds_on();
alexliu0812 4:aada5ebb075d 77 wait(0.1);
alexliu0812 4:aada5ebb075d 78 pad.leds_off();
alexliu0812 4:aada5ebb075d 79 print_score(lcd,pad,x1up, y1up, x1down, y1down, x2up, y2up,x2down,y2down,manx, many);
alexliu0812 4:aada5ebb075d 80
alexliu0812 4:aada5ebb075d 81 }
alexliu0812 4:aada5ebb075d 82 //check if character has crash on the wall
alexliu0812 4:aada5ebb075d 83 if(upperlimit.x > 15 && upperlimit.x < 26){
alexliu0812 4:aada5ebb075d 84
alexliu0812 4:aada5ebb075d 85 if(characterposition.y < upperlimit.y || characterposition.y + 11 > lowerlimit.y ){
alexliu0812 4:aada5ebb075d 86
alexliu0812 4:aada5ebb075d 87 pad.leds_on();
alexliu0812 4:aada5ebb075d 88 pad.tone(500.0,0.5);
alexliu0812 4:aada5ebb075d 89 print_score(lcd,pad,x1up, y1up, x1down, y1down, x2up, y2up,x2down,y2down,manx, many);
alexliu0812 4:aada5ebb075d 90 }
alexliu0812 4:aada5ebb075d 91 }
alexliu0812 4:aada5ebb075d 92
alexliu0812 4:aada5ebb075d 93 int check_crash_score;
alexliu0812 4:aada5ebb075d 94 check_crash_score = block.get_score();
alexliu0812 4:aada5ebb075d 95
alexliu0812 9:50470a40d213 96 //printf("score = %2d\n", check_crash_score)
alexliu0812 9:50470a40d213 97
alexliu0812 9:50470a40d213 98 //check the score and update the level, each level has different coordinates
alexliu0812 9:50470a40d213 99 //for adding the score becasue of the velocity different
alexliu0812 4:aada5ebb075d 100 if(check_crash_score < 10){
alexliu0812 9:50470a40d213 101 //int test2 = 1;
alexliu0812 4:aada5ebb075d 102 if(upperlimit.x > 13 && upperlimit.x < 15){
alexliu0812 4:aada5ebb075d 103 block.add_score();
alexliu0812 4:aada5ebb075d 104 }
alexliu0812 4:aada5ebb075d 105 }
alexliu0812 4:aada5ebb075d 106 else if(check_crash_score >9 && check_crash_score < 20){
alexliu0812 9:50470a40d213 107 //int test2 = 2;
alexliu0812 4:aada5ebb075d 108 if(upperlimit.x > 12 && upperlimit.x < 15){
alexliu0812 4:aada5ebb075d 109 block.add_score();
alexliu0812 4:aada5ebb075d 110 }
alexliu0812 4:aada5ebb075d 111 }
alexliu0812 4:aada5ebb075d 112 else if(check_crash_score >19 && check_crash_score < 30){
alexliu0812 9:50470a40d213 113 //int test2 = 3;
alexliu0812 4:aada5ebb075d 114 if(upperlimit.x > 11 && upperlimit.x < 15){
alexliu0812 4:aada5ebb075d 115 block.add_score();
alexliu0812 4:aada5ebb075d 116 }
alexliu0812 4:aada5ebb075d 117 }
alexliu0812 4:aada5ebb075d 118 else{
alexliu0812 9:50470a40d213 119 //int test2 = 4;
alexliu0812 4:aada5ebb075d 120 if(upperlimit.x > 10 && upperlimit.x < 15){
alexliu0812 4:aada5ebb075d 121 block.add_score();
alexliu0812 4:aada5ebb075d 122 }
alexliu0812 3:e53e289cd4ba 123
alexliu0812 4:aada5ebb075d 124 }
alexliu0812 9:50470a40d213 125 //printf("the level2 is at = %d\n",test2);
alexliu0812 4:aada5ebb075d 126 }
alexliu0812 4:aada5ebb075d 127
alexliu0812 4:aada5ebb075d 128 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 129
alexliu0812 4:aada5ebb075d 130
alexliu0812 4:aada5ebb075d 131 int finalscore = block.get_score();
alexliu0812 4:aada5ebb075d 132 lcd.clear();
alexliu0812 4:aada5ebb075d 133 char score[14];
alexliu0812 4:aada5ebb075d 134 while(pad.B_pressed() == false){
alexliu0812 4:aada5ebb075d 135 sprintf(score, "%2d score!", finalscore);
alexliu0812 4:aada5ebb075d 136 lcd.printString("Finally...",1,0);
alexliu0812 4:aada5ebb075d 137 lcd.printString("You achieved",1,1);
alexliu0812 4:aada5ebb075d 138 lcd.printString(score,1,2);
alexliu0812 4:aada5ebb075d 139 lcd.printString("Try again?",1,3);
alexliu0812 4:aada5ebb075d 140 lcd.printString("press B",1,4);
alexliu0812 4:aada5ebb075d 141 pad.leds_on();
alexliu0812 4:aada5ebb075d 142 wait(0.1);
alexliu0812 4:aada5ebb075d 143 pad.leds_off();
alexliu0812 4:aada5ebb075d 144 wait(0.1);
alexliu0812 4:aada5ebb075d 145 lcd.refresh();
alexliu0812 4:aada5ebb075d 146 }
alexliu0812 4:aada5ebb075d 147 lcd.clear();
alexliu0812 4:aada5ebb075d 148 init(x1up, y1up, x1down, y1down, x2up, y2up,x2down,y2down,manx, many);
alexliu0812 4:aada5ebb075d 149
alexliu0812 4:aada5ebb075d 150 }
alexliu0812 4:aada5ebb075d 151
alexliu0812 4:aada5ebb075d 152 void DodgeEngine::show_score(N5110 &lcd){
alexliu0812 4:aada5ebb075d 153
alexliu0812 4:aada5ebb075d 154 int showscore = block.get_score();
alexliu0812 4:aada5ebb075d 155 char score2[10];
alexliu0812 4:aada5ebb075d 156 sprintf(score2, "%2d", showscore);
alexliu0812 4:aada5ebb075d 157 lcd.printString(score2,0,0);
alexliu0812 4:aada5ebb075d 158 lcd.refresh();
alexliu0812 4:aada5ebb075d 159
alexliu0812 4:aada5ebb075d 160 }
alexliu0812 4:aada5ebb075d 161
alexliu0812 4:aada5ebb075d 162 void DodgeEngine::pass_game(N5110 &lcd, Gamepad &pad){
alexliu0812 4:aada5ebb075d 163
alexliu0812 4:aada5ebb075d 164 lcd.clear();
alexliu0812 4:aada5ebb075d 165 while(pad.B_pressed() == false){
alexliu0812 4:aada5ebb075d 166 lcd.printString("Congratulation",1,1);
alexliu0812 4:aada5ebb075d 167 lcd.printString("All level pass",1,2);
alexliu0812 4:aada5ebb075d 168 lcd.printString(" Try Again? ",1,4);
alexliu0812 4:aada5ebb075d 169 lcd.printString(" Press B ",1,5);
alexliu0812 4:aada5ebb075d 170 pad.leds_on();
alexliu0812 4:aada5ebb075d 171 wait(0.1);
alexliu0812 4:aada5ebb075d 172 pad.leds_off();
alexliu0812 4:aada5ebb075d 173 wait(0.1);
alexliu0812 4:aada5ebb075d 174 lcd.refresh();
alexliu0812 4:aada5ebb075d 175 }
alexliu0812 4:aada5ebb075d 176 }
alexliu0812 2:d621a4cbe0c2 177