ZIWEI LIU
/
ELEC2645_Project_el19z2l
DodgeEngine/DodgeEngine.cpp@5:b5c95c7a5302, 2020-05-17 (annotated)
- 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?
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 | 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 |