ELEC2645 (2017/18) / Mbed 2 deprecated fy15raf

Dependencies:   mbed

Committer:
RehamFaqehi
Date:
Thu May 03 22:34:03 2018 +0000
Revision:
11:cb48d596aa3e
Parent:
10:3af708f38a42
Child:
12:4d7f1349d796
Asteroids shape was fixed

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 11:cb48d596aa3e 19 // Sec=0;
RehamFaqehi 11:cb48d596aa3e 20 gameOver=0;
RehamFaqehi 2:3fd0d3d69556 21 }
RehamFaqehi 2:3fd0d3d69556 22
RehamFaqehi 2:3fd0d3d69556 23 void GameEngine::read_input(Gamepad &pad)
RehamFaqehi 2:3fd0d3d69556 24 {
RehamFaqehi 2:3fd0d3d69556 25 _d = pad.get_direction();
RehamFaqehi 2:3fd0d3d69556 26 _mag = pad.get_mag();
RehamFaqehi 2:3fd0d3d69556 27 }
RehamFaqehi 2:3fd0d3d69556 28
RehamFaqehi 2:3fd0d3d69556 29 void GameEngine::draw(N5110 &lcd)
RehamFaqehi 2:3fd0d3d69556 30 {
RehamFaqehi 2:3fd0d3d69556 31 // draw the game elements in the LCD
RehamFaqehi 2:3fd0d3d69556 32 _rocket.draw(lcd);
RehamFaqehi 8:13cef7cb872e 33 _asteroid1.draw(lcd);
RehamFaqehi 11:cb48d596aa3e 34 _asteroid2.draw(lcd);
RehamFaqehi 8:13cef7cb872e 35 _asteroid3.draw(lcd);
RehamFaqehi 7:06c86ec1f19d 36 //print_scores(lcd);
RehamFaqehi 7:06c86ec1f19d 37 print_scores1(lcd);
RehamFaqehi 11:cb48d596aa3e 38 // print_sec(lcd);
RehamFaqehi 2:3fd0d3d69556 39
RehamFaqehi 2:3fd0d3d69556 40 }
RehamFaqehi 2:3fd0d3d69556 41
RehamFaqehi 10:3af708f38a42 42 void GameEngine::update(Gamepad &pad, N5110 &lcd)
RehamFaqehi 3:489437d4ebd7 43 {
RehamFaqehi 6:7b733b2a6cf6 44
RehamFaqehi 6:7b733b2a6cf6 45 check_goal(pad);
RehamFaqehi 3:489437d4ebd7 46 _rocket.update(_d,_mag, lcd);
RehamFaqehi 8:13cef7cb872e 47 _asteroid1.update();
RehamFaqehi 8:13cef7cb872e 48 _asteroid2.update();
RehamFaqehi 8:13cef7cb872e 49 _asteroid3.update();
RehamFaqehi 11:cb48d596aa3e 50 //sec();
RehamFaqehi 3:489437d4ebd7 51 }
RehamFaqehi 6:7b733b2a6cf6 52
RehamFaqehi 6:7b733b2a6cf6 53
RehamFaqehi 6:7b733b2a6cf6 54 void GameEngine::check_goal(Gamepad &pad)
RehamFaqehi 6:7b733b2a6cf6 55 {
RehamFaqehi 8:13cef7cb872e 56 Vector2D _asteroid1_pos = _asteroid1.get_pos() ;
RehamFaqehi 8:13cef7cb872e 57 Vector2D _asteroid2_pos = _asteroid2.get_pos() ;
RehamFaqehi 8:13cef7cb872e 58 Vector2D _asteroid3_pos = _asteroid3.get_pos() ;
RehamFaqehi 8:13cef7cb872e 59
RehamFaqehi 6:7b733b2a6cf6 60 Vector2D _rocket_pos = _rocket.get_pos();
RehamFaqehi 7:06c86ec1f19d 61
RehamFaqehi 11:cb48d596aa3e 62 if ((_rocket_pos.x+10 >=_asteroid1_pos.x) &&
RehamFaqehi 11:cb48d596aa3e 63 ( _rocket_pos.x+8 <_asteroid1_pos.x )) {//size //sprint width //float/////////////speed
RehamFaqehi 11:cb48d596aa3e 64 if( ( _asteroid1_pos.y >= _rocket_pos.y) &&
RehamFaqehi 11:cb48d596aa3e 65 ( _asteroid1_pos.y <= _rocket_pos.y+7) ||
RehamFaqehi 11:cb48d596aa3e 66 (_asteroid1_pos.y+6 >= _rocket_pos.y) &&
RehamFaqehi 11:cb48d596aa3e 67 (_asteroid1_pos.y+6 <= _rocket_pos.y+7 )) {
RehamFaqehi 7:06c86ec1f19d 68 _rocket.add_score();
RehamFaqehi 7:06c86ec1f19d 69 pad.tone(1500.0,0.5);
RehamFaqehi 7:06c86ec1f19d 70 pad.leds_on();
RehamFaqehi 7:06c86ec1f19d 71 wait(0.5);
RehamFaqehi 7:06c86ec1f19d 72 pad.leds_off();
RehamFaqehi 6:7b733b2a6cf6 73 }
RehamFaqehi 7:06c86ec1f19d 74 }
RehamFaqehi 8:13cef7cb872e 75
RehamFaqehi 11:cb48d596aa3e 76 if ((_rocket_pos.x+10 >=_asteroid2_pos.x) &&
RehamFaqehi 11:cb48d596aa3e 77 (_rocket_pos.x+8 <_asteroid2_pos.x )) {
RehamFaqehi 11:cb48d596aa3e 78 //size //sprint width //float/////////////speed
RehamFaqehi 11:cb48d596aa3e 79 if( (_asteroid2_pos.y >= _rocket_pos.y) &&
RehamFaqehi 11:cb48d596aa3e 80 ( _asteroid2_pos.y <= _rocket_pos.y+7) ||
RehamFaqehi 11:cb48d596aa3e 81 (_asteroid2_pos.y+6 >= _rocket_pos.y) &&
RehamFaqehi 11:cb48d596aa3e 82 ( _asteroid2_pos.y+6 <= _rocket_pos.y+7 )) {
RehamFaqehi 8:13cef7cb872e 83 _rocket.add_score();
RehamFaqehi 8:13cef7cb872e 84 pad.tone(1500.0,0.5);
RehamFaqehi 8:13cef7cb872e 85 pad.leds_on();
RehamFaqehi 8:13cef7cb872e 86 wait(0.5);
RehamFaqehi 8:13cef7cb872e 87 pad.leds_off();
RehamFaqehi 8:13cef7cb872e 88 }
RehamFaqehi 8:13cef7cb872e 89 }
RehamFaqehi 11:cb48d596aa3e 90 ///////////////////////////////////////
RehamFaqehi 11:cb48d596aa3e 91 if ((_rocket_pos.x+10 >= _asteroid3_pos.x) &&
RehamFaqehi 11:cb48d596aa3e 92 ( _rocket_pos.x+6 < _asteroid3_pos.x ))
RehamFaqehi 11:cb48d596aa3e 93 {//size //sprint width //float/////////////speed
RehamFaqehi 11:cb48d596aa3e 94 if( (_asteroid3_pos.y >= _rocket_pos.y) &&
RehamFaqehi 11:cb48d596aa3e 95 ( _asteroid3_pos.y <= _rocket_pos.y+7) ||
RehamFaqehi 11:cb48d596aa3e 96 ( _asteroid3_pos.y+6 >= _rocket_pos.y) &&
RehamFaqehi 11:cb48d596aa3e 97 (_asteroid3_pos.y+6 <= _rocket_pos.y+7 )) {
RehamFaqehi 11:cb48d596aa3e 98 _rocket.add_score();
RehamFaqehi 11:cb48d596aa3e 99 pad.tone(1500.0,0.5);
RehamFaqehi 11:cb48d596aa3e 100 pad.leds_on();
RehamFaqehi 11:cb48d596aa3e 101 wait(0.5);
RehamFaqehi 11:cb48d596aa3e 102 pad.leds_off();
RehamFaqehi 8:13cef7cb872e 103 }
RehamFaqehi 8:13cef7cb872e 104 }
RehamFaqehi 8:13cef7cb872e 105
RehamFaqehi 6:7b733b2a6cf6 106 }
RehamFaqehi 8:13cef7cb872e 107
RehamFaqehi 8:13cef7cb872e 108
RehamFaqehi 6:7b733b2a6cf6 109 //////////////////////////////////////////////////////////////////
RehamFaqehi 7:06c86ec1f19d 110 void GameEngine::print_scores(N5110 &lcd) //this function is not used now
RehamFaqehi 6:7b733b2a6cf6 111 {
RehamFaqehi 6:7b733b2a6cf6 112 // get the number of hits
RehamFaqehi 6:7b733b2a6cf6 113 int _rocket_score = _rocket.get_score();
RehamFaqehi 6:7b733b2a6cf6 114
RehamFaqehi 6:7b733b2a6cf6 115 // print to LCD i
RehamFaqehi 6:7b733b2a6cf6 116 char buffer1[11];
RehamFaqehi 6:7b733b2a6cf6 117 sprintf(buffer1,"hits:%2d",_rocket_score);
RehamFaqehi 6:7b733b2a6cf6 118 lcd.printString(buffer1,WIDTH/2 - 20, 1);
RehamFaqehi 7:06c86ec1f19d 119 }
RehamFaqehi 7:06c86ec1f19d 120
RehamFaqehi 7:06c86ec1f19d 121 void GameEngine::print_scores1(N5110 &lcd)
RehamFaqehi 7:06c86ec1f19d 122 {
RehamFaqehi 7:06c86ec1f19d 123 // get scores from Rocket
RehamFaqehi 7:06c86ec1f19d 124 int _rocket_score = _rocket.get_score();
RehamFaqehi 7:06c86ec1f19d 125 // get_score();
RehamFaqehi 7:06c86ec1f19d 126 if (_rocket_score ==1) {
RehamFaqehi 7:06c86ec1f19d 127 _rocket.drawTwoHearts(lcd);
RehamFaqehi 7:06c86ec1f19d 128 } else if (_rocket_score==0) {
RehamFaqehi 7:06c86ec1f19d 129 _rocket.drawFullHearts(lcd);
RehamFaqehi 7:06c86ec1f19d 130 } else if (_rocket_score == 2) {
RehamFaqehi 7:06c86ec1f19d 131 _rocket.drawOneHeart(lcd);
RehamFaqehi 7:06c86ec1f19d 132 } else {
RehamFaqehi 9:e70179ff61c5 133 gameOver=1;
RehamFaqehi 7:06c86ec1f19d 134 }
RehamFaqehi 9:e70179ff61c5 135 }
RehamFaqehi 9:e70179ff61c5 136
RehamFaqehi 9:e70179ff61c5 137 int GameEngine::get_gameOver1()
RehamFaqehi 9:e70179ff61c5 138 {
RehamFaqehi 9:e70179ff61c5 139 return gameOver;
RehamFaqehi 11:cb48d596aa3e 140 }
RehamFaqehi 11:cb48d596aa3e 141 /*void GameEngine::sec(){
RehamFaqehi 11:cb48d596aa3e 142 //Sec=timer_isr();
RehamFaqehi 11:cb48d596aa3e 143
RehamFaqehi 11:cb48d596aa3e 144 Sec++;
RehamFaqehi 11:cb48d596aa3e 145 }
RehamFaqehi 11:cb48d596aa3e 146 //int GameEngine::get_time()
RehamFaqehi 11:cb48d596aa3e 147 //{
RehamFaqehi 11:cb48d596aa3e 148 //return sec;
RehamFaqehi 11:cb48d596aa3e 149 // }
RehamFaqehi 11:cb48d596aa3e 150
RehamFaqehi 11:cb48d596aa3e 151 void GameEngine::print_sec(N5110 &lcd)
RehamFaqehi 11:cb48d596aa3e 152 {
RehamFaqehi 11:cb48d596aa3e 153 // get scores from paddles
RehamFaqehi 11:cb48d596aa3e 154 //int R1_sec = _R1.get_score();
RehamFaqehi 11:cb48d596aa3e 155
RehamFaqehi 11:cb48d596aa3e 156 // print to LCD i
RehamFaqehi 11:cb48d596aa3e 157 char buffer1[11];
RehamFaqehi 11:cb48d596aa3e 158 sprintf(buffer1,"%3d",Sec);
RehamFaqehi 11:cb48d596aa3e 159 lcd.printString(buffer1, 40, 0); // font is 8 wide, so leave 4 pixel gape from middle assuming two digits
RehamFaqehi 11:cb48d596aa3e 160 }
RehamFaqehi 11:cb48d596aa3e 161
RehamFaqehi 11:cb48d596aa3e 162 void GameEngine::print_sec_over(N5110 &lcd)
RehamFaqehi 11:cb48d596aa3e 163 {
RehamFaqehi 11:cb48d596aa3e 164 // get scores from paddles
RehamFaqehi 11:cb48d596aa3e 165 //int R1_sec = _R1.get_score();
RehamFaqehi 11:cb48d596aa3e 166
RehamFaqehi 11:cb48d596aa3e 167 // print to LCD i
RehamFaqehi 11:cb48d596aa3e 168 char buffer2[11];
RehamFaqehi 11:cb48d596aa3e 169 sprintf(buffer2," time: %3d s",Sec);
RehamFaqehi 11:cb48d596aa3e 170 lcd.printString(buffer2, 0, 5); // font is 8 wide, so leave 4 pixel gape from middle assuming two digits
RehamFaqehi 11:cb48d596aa3e 171 }
RehamFaqehi 11:cb48d596aa3e 172
RehamFaqehi 11:cb48d596aa3e 173 void timer_isr(){
RehamFaqehi 11:cb48d596aa3e 174 g_timer_flag=1;
RehamFaqehi 11:cb48d596aa3e 175 }*/