ZIWEI LIU
/
ELEC2645_Project_el19z2l
Diff: DodgeEngine/DodgeEngine.cpp
- Revision:
- 4:aada5ebb075d
- Parent:
- 3:e53e289cd4ba
- Child:
- 5:b5c95c7a5302
--- a/DodgeEngine/DodgeEngine.cpp Fri May 15 13:30:09 2020 +0000 +++ b/DodgeEngine/DodgeEngine.cpp Sat May 16 16:06:06 2020 +0000 @@ -4,9 +4,10 @@ DodgeEngine::DodgeEngine(){} DodgeEngine::~DodgeEngine(){} -void DodgeEngine::init(int x1up, int y1up, int x1down, int y1down, int x2up, int y2up, int x2down, int y2down){ +void DodgeEngine::init(int x1up, int y1up, int x1down, int y1down, int x2up, int y2up, int x2down, int y2down, int manx, int many){ block.blockinit(x1up, y1up, x1down, y1down, x2up, y2up,x2down,y2down); + character.charinit(manx, many); } void DodgeEngine::charactermove(N5110 &lcd,Gamepad &pad){ @@ -24,10 +25,138 @@ } -void DodgeEngine::dodgeupdate(){ - block.blockupgrate(); +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){ + + + check_crash(lcd,pad,x1up, y1up, x1down, y1down, x2up, y2up,x2down,y2down,manx, many); + show_score(lcd); + + int updatescore; + updatescore = block.get_score(); + + if(updatescore > 39){ + pass_game(lcd,pad); + } + + + if(updatescore > 9 && updatescore < 20){ + block.blockupgrate2(); + } + else if(updatescore > 19 &&updatescore <30){ + block.blockupgrate3(); + } + else if(updatescore > 29 &&updatescore <40){ + block.blockupgrate4(); + } + else{ + block.blockupgrate(); + } + + + } - +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){ + Vector2D characterposition = character.get_char_position(); + Vector2D upperlimit = block.getposition2(); + Vector2D lowerlimit = block.getposition3(); + + //check if character has fall on the ground + if(characterposition.y > 35){ + + //audio and led feedback + pad.tone(500.0,0.5); + pad.leds_on(); + wait(0.1); + pad.leds_off(); + print_score(lcd,pad,x1up, y1up, x1down, y1down, x2up, y2up,x2down,y2down,manx, many); + + } + //check if character has crash on the wall + if(upperlimit.x > 15 && upperlimit.x < 26){ + + if(characterposition.y < upperlimit.y || characterposition.y + 11 > lowerlimit.y ){ + + pad.leds_on(); + pad.tone(500.0,0.5); + print_score(lcd,pad,x1up, y1up, x1down, y1down, x2up, y2up,x2down,y2down,manx, many); + } + } + + int check_crash_score; + check_crash_score = block.get_score(); + + if(check_crash_score < 10){ + if(upperlimit.x > 13 && upperlimit.x < 15){ + block.add_score(); + } + } + else if(check_crash_score >9 && check_crash_score < 20){ + if(upperlimit.x > 12 && upperlimit.x < 15){ + block.add_score(); + } + } + else if(check_crash_score >19 && check_crash_score < 30){ + if(upperlimit.x > 11 && upperlimit.x < 15){ + block.add_score(); + } + } + else{ + if(upperlimit.x > 10 && upperlimit.x < 15){ + block.add_score(); + } + } + + } + + 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){ + + + int finalscore = block.get_score(); + lcd.clear(); + char score[14]; + while(pad.B_pressed() == false){ + sprintf(score, "%2d score!", finalscore); + lcd.printString("Finally...",1,0); + lcd.printString("You achieved",1,1); + lcd.printString(score,1,2); + lcd.printString("Try again?",1,3); + lcd.printString("press B",1,4); + pad.leds_on(); + wait(0.1); + pad.leds_off(); + wait(0.1); + lcd.refresh(); + } + lcd.clear(); + init(x1up, y1up, x1down, y1down, x2up, y2up,x2down,y2down,manx, many); + +} + +void DodgeEngine::show_score(N5110 &lcd){ + + int showscore = block.get_score(); + char score2[10]; + sprintf(score2, "%2d", showscore); + lcd.printString(score2,0,0); + lcd.refresh(); + +} + +void DodgeEngine::pass_game(N5110 &lcd, Gamepad &pad){ + + lcd.clear(); + while(pad.B_pressed() == false){ + lcd.printString("Congratulation",1,1); + lcd.printString("All level pass",1,2); + lcd.printString(" Try Again? ",1,4); + lcd.printString(" Press B ",1,5); + pad.leds_on(); + wait(0.1); + pad.leds_off(); + wait(0.1); + lcd.refresh(); + } +} \ No newline at end of file