ZIWEI LIU
/
ELEC2645_Project_el19z2l
201377806 ZiWei Liu
DodgeEngine/DodgeEngine.cpp@9:50470a40d213, 2020-05-18 (annotated)
- 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?
User | Revision | Line number | New 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 |