ELEC2645 (2017/18) / Mbed 2 deprecated fy15raf

Dependencies:   mbed

Committer:
RehamFaqehi
Date:
Tue Apr 24 11:17:43 2018 +0000
Revision:
8:13cef7cb872e
Parent:
7:06c86ec1f19d
Child:
9:e70179ff61c5
Two more asteroids added

Who changed what in which revision?

UserRevisionLine numberNew contents of line
RehamFaqehi 2:3fd0d3d69556 1 #include "GameEngine.h"
RehamFaqehi 2:3fd0d3d69556 2
RehamFaqehi 2:3fd0d3d69556 3 GameEngine::GameEngine()
RehamFaqehi 2:3fd0d3d69556 4 {
RehamFaqehi 2:3fd0d3d69556 5
RehamFaqehi 2:3fd0d3d69556 6 }
RehamFaqehi 2:3fd0d3d69556 7
RehamFaqehi 2:3fd0d3d69556 8 GameEngine::~GameEngine()
RehamFaqehi 2:3fd0d3d69556 9 {
RehamFaqehi 2:3fd0d3d69556 10
RehamFaqehi 2:3fd0d3d69556 11 }
RehamFaqehi 2:3fd0d3d69556 12
RehamFaqehi 2:3fd0d3d69556 13 void GameEngine::init()
RehamFaqehi 2:3fd0d3d69556 14 {
RehamFaqehi 2:3fd0d3d69556 15 _rocket.init();
RehamFaqehi 8:13cef7cb872e 16 _asteroid1.init(2);
RehamFaqehi 8:13cef7cb872e 17 _asteroid2.init(3);
RehamFaqehi 8:13cef7cb872e 18 _asteroid3.init(4);
RehamFaqehi 2:3fd0d3d69556 19 }
RehamFaqehi 2:3fd0d3d69556 20
RehamFaqehi 2:3fd0d3d69556 21 void GameEngine::read_input(Gamepad &pad)
RehamFaqehi 2:3fd0d3d69556 22 {
RehamFaqehi 2:3fd0d3d69556 23 _d = pad.get_direction();
RehamFaqehi 2:3fd0d3d69556 24 _mag = pad.get_mag();
RehamFaqehi 2:3fd0d3d69556 25 }
RehamFaqehi 2:3fd0d3d69556 26
RehamFaqehi 2:3fd0d3d69556 27 void GameEngine::draw(N5110 &lcd)
RehamFaqehi 2:3fd0d3d69556 28 {
RehamFaqehi 2:3fd0d3d69556 29 // draw the game elements in the LCD
RehamFaqehi 2:3fd0d3d69556 30 _rocket.draw(lcd);
RehamFaqehi 8:13cef7cb872e 31 _asteroid1.draw(lcd);
RehamFaqehi 8:13cef7cb872e 32 _asteroid2.draw(lcd);
RehamFaqehi 8:13cef7cb872e 33 _asteroid3.draw(lcd);
RehamFaqehi 7:06c86ec1f19d 34 //print_scores(lcd);
RehamFaqehi 7:06c86ec1f19d 35 print_scores1(lcd);
RehamFaqehi 2:3fd0d3d69556 36
RehamFaqehi 2:3fd0d3d69556 37 }
RehamFaqehi 2:3fd0d3d69556 38
RehamFaqehi 3:489437d4ebd7 39 void GameEngine::update(Gamepad &pad, N5110 &lcd)
RehamFaqehi 3:489437d4ebd7 40 {
RehamFaqehi 6:7b733b2a6cf6 41
RehamFaqehi 6:7b733b2a6cf6 42 check_goal(pad);
RehamFaqehi 3:489437d4ebd7 43 _rocket.update(_d,_mag, lcd);
RehamFaqehi 8:13cef7cb872e 44 _asteroid1.update();
RehamFaqehi 8:13cef7cb872e 45 _asteroid2.update();
RehamFaqehi 8:13cef7cb872e 46 _asteroid3.update();
RehamFaqehi 8:13cef7cb872e 47
RehamFaqehi 3:489437d4ebd7 48 }
RehamFaqehi 6:7b733b2a6cf6 49
RehamFaqehi 6:7b733b2a6cf6 50
RehamFaqehi 6:7b733b2a6cf6 51 void GameEngine::check_goal(Gamepad &pad)
RehamFaqehi 6:7b733b2a6cf6 52 {
RehamFaqehi 8:13cef7cb872e 53 Vector2D _asteroid1_pos = _asteroid1.get_pos() ;
RehamFaqehi 8:13cef7cb872e 54 Vector2D _asteroid2_pos = _asteroid2.get_pos() ;
RehamFaqehi 8:13cef7cb872e 55 Vector2D _asteroid3_pos = _asteroid3.get_pos() ;
RehamFaqehi 8:13cef7cb872e 56
RehamFaqehi 6:7b733b2a6cf6 57 Vector2D _rocket_pos = _rocket.get_pos();
RehamFaqehi 7:06c86ec1f19d 58
RehamFaqehi 8:13cef7cb872e 59 if (_rocket_pos.x+11 >=_asteroid1_pos.x && _rocket_pos.x+9 <_asteroid1_pos.x ) {//size //sprint width //float/////////////speed
RehamFaqehi 8:13cef7cb872e 60 if( _asteroid1_pos.y >= _rocket_pos.y && _asteroid1_pos.y <= _rocket_pos.y+7 || _asteroid1_pos.y+7 >= _rocket_pos.y && _asteroid1_pos.y+7 <= _rocket_pos.y+7 ) {
RehamFaqehi 7:06c86ec1f19d 61 _rocket.add_score();
RehamFaqehi 7:06c86ec1f19d 62 pad.tone(1500.0,0.5);
RehamFaqehi 7:06c86ec1f19d 63 pad.leds_on();
RehamFaqehi 7:06c86ec1f19d 64 wait(0.5);
RehamFaqehi 7:06c86ec1f19d 65 pad.leds_off();
RehamFaqehi 6:7b733b2a6cf6 66 }
RehamFaqehi 7:06c86ec1f19d 67 }
RehamFaqehi 8:13cef7cb872e 68
RehamFaqehi 8:13cef7cb872e 69 if (_rocket_pos.x+11 >=_asteroid2_pos.x && _rocket_pos.x+9 <_asteroid2_pos.x ) {//size //sprint width //float/////////////speed
RehamFaqehi 8:13cef7cb872e 70 if( _asteroid2_pos.y >= _rocket_pos.y && _asteroid2_pos.y <= _rocket_pos.y+7 || _asteroid2_pos.y+7 >= _rocket_pos.y && _asteroid2_pos.y+7 <= _rocket_pos.y+7 ) {
RehamFaqehi 8:13cef7cb872e 71 _rocket.add_score();
RehamFaqehi 8:13cef7cb872e 72 pad.tone(1500.0,0.5);
RehamFaqehi 8:13cef7cb872e 73 pad.leds_on();
RehamFaqehi 8:13cef7cb872e 74 wait(0.5);
RehamFaqehi 8:13cef7cb872e 75 pad.leds_off();
RehamFaqehi 8:13cef7cb872e 76 }
RehamFaqehi 8:13cef7cb872e 77 }
RehamFaqehi 8:13cef7cb872e 78
RehamFaqehi 8:13cef7cb872e 79 if (_rocket_pos.x+11 >=_asteroid3_pos.x && _rocket_pos.x+7 <_asteroid3_pos.x ) {//size //sprint width //float/////////////speed
RehamFaqehi 8:13cef7cb872e 80 if( _asteroid3_pos.y >= _rocket_pos.y && _asteroid3_pos.y <= _rocket_pos.y+7 || _asteroid3_pos.y+7 >= _rocket_pos.y && _asteroid3_pos.y+7 <= _rocket_pos.y+7 ) {
RehamFaqehi 8:13cef7cb872e 81 _rocket.add_score();
RehamFaqehi 8:13cef7cb872e 82 pad.tone(1500.0,0.5);
RehamFaqehi 8:13cef7cb872e 83 pad.leds_on();
RehamFaqehi 8:13cef7cb872e 84 wait(0.5);
RehamFaqehi 8:13cef7cb872e 85 pad.leds_off();
RehamFaqehi 8:13cef7cb872e 86 }
RehamFaqehi 8:13cef7cb872e 87 }
RehamFaqehi 8:13cef7cb872e 88
RehamFaqehi 6:7b733b2a6cf6 89 }
RehamFaqehi 8:13cef7cb872e 90
RehamFaqehi 8:13cef7cb872e 91
RehamFaqehi 6:7b733b2a6cf6 92 //////////////////////////////////////////////////////////////////
RehamFaqehi 7:06c86ec1f19d 93 void GameEngine::print_scores(N5110 &lcd) //this function is not used now
RehamFaqehi 6:7b733b2a6cf6 94 {
RehamFaqehi 6:7b733b2a6cf6 95 // get the number of hits
RehamFaqehi 6:7b733b2a6cf6 96 int _rocket_score = _rocket.get_score();
RehamFaqehi 6:7b733b2a6cf6 97
RehamFaqehi 6:7b733b2a6cf6 98 // print to LCD i
RehamFaqehi 6:7b733b2a6cf6 99 char buffer1[11];
RehamFaqehi 6:7b733b2a6cf6 100 sprintf(buffer1,"hits:%2d",_rocket_score);
RehamFaqehi 6:7b733b2a6cf6 101 lcd.printString(buffer1,WIDTH/2 - 20, 1);
RehamFaqehi 7:06c86ec1f19d 102 }
RehamFaqehi 7:06c86ec1f19d 103
RehamFaqehi 7:06c86ec1f19d 104 void GameEngine::print_scores1(N5110 &lcd)
RehamFaqehi 7:06c86ec1f19d 105 {
RehamFaqehi 7:06c86ec1f19d 106 // get scores from Rocket
RehamFaqehi 7:06c86ec1f19d 107 int _rocket_score = _rocket.get_score();
RehamFaqehi 7:06c86ec1f19d 108 // get_score();
RehamFaqehi 7:06c86ec1f19d 109 if (_rocket_score ==1) {
RehamFaqehi 7:06c86ec1f19d 110 _rocket.drawTwoHearts(lcd);
RehamFaqehi 7:06c86ec1f19d 111 } else if (_rocket_score==0) {
RehamFaqehi 7:06c86ec1f19d 112 _rocket.drawFullHearts(lcd);
RehamFaqehi 7:06c86ec1f19d 113 } else if (_rocket_score == 2) {
RehamFaqehi 7:06c86ec1f19d 114 _rocket.drawOneHeart(lcd);
RehamFaqehi 7:06c86ec1f19d 115 } else {
RehamFaqehi 7:06c86ec1f19d 116 _rocket.drawOneHeart(lcd);
RehamFaqehi 7:06c86ec1f19d 117 }
RehamFaqehi 6:7b733b2a6cf6 118 }