Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed
GameEngine/GameEngine.cpp@11:cb48d596aa3e, 2018-05-03 (annotated)
- 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?
| User | Revision | Line number | New 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 | }*/ |