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
Engine/Engine.cpp@12:660458c41c8e, 2019-05-09 (annotated)
- Committer:
- davidwst421
- Date:
- Thu May 09 04:26:16 2019 +0000
- Revision:
- 12:660458c41c8e
- Parent:
- 9:f88f3f50bbee
- Child:
- 13:c3c58d50a571
Add easter egg
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| davidwst421 | 0:fd8eda608206 | 1 | #include "Engine.h" |
| davidwst421 | 0:fd8eda608206 | 2 | |
| davidwst421 | 0:fd8eda608206 | 3 | Engine::Engine() |
| davidwst421 | 0:fd8eda608206 | 4 | { |
| davidwst421 | 0:fd8eda608206 | 5 | |
| davidwst421 | 0:fd8eda608206 | 6 | } |
| davidwst421 | 0:fd8eda608206 | 7 | |
| davidwst421 | 0:fd8eda608206 | 8 | Engine::~Engine() |
| davidwst421 | 0:fd8eda608206 | 9 | { |
| davidwst421 | 0:fd8eda608206 | 10 | |
| davidwst421 | 0:fd8eda608206 | 11 | } |
| davidwst421 | 0:fd8eda608206 | 12 | |
| davidwst421 | 7:193c0fd7afdd | 13 | void Engine::init(int wall_width,int wall_gap,int stone_size,int speed) { |
| davidwst421 | 0:fd8eda608206 | 14 | |
| davidwst421 | 0:fd8eda608206 | 15 | // initialise the game parameters |
| davidwst421 | 0:fd8eda608206 | 16 | _wall_width = wall_width; |
| davidwst421 | 0:fd8eda608206 | 17 | _wall_gap = wall_gap; |
| davidwst421 | 0:fd8eda608206 | 18 | _stone_size = stone_size; |
| davidwst421 | 0:fd8eda608206 | 19 | _speed = speed; |
| davidwst421 | 0:fd8eda608206 | 20 | |
| davidwst421 | 0:fd8eda608206 | 21 | // x position on screen - WIDTH is defined in N5110.h |
| davidwst421 | 0:fd8eda608206 | 22 | _w0x = WIDTH; |
| davidwst421 | 7:193c0fd7afdd | 23 | _w1x = WIDTH + 30; |
| davidwst421 | 7:193c0fd7afdd | 24 | _w2x = WIDTH + 60; |
| davidwst421 | 7:193c0fd7afdd | 25 | _w3x = WIDTH + 90; |
| davidwst421 | 7:193c0fd7afdd | 26 | _w4x = WIDTH + 120; |
| davidwst421 | 0:fd8eda608206 | 27 | _avengerx = 10; |
| davidwst421 | 7:193c0fd7afdd | 28 | _stonex = WIDTH + 105; |
| davidwst421 | 0:fd8eda608206 | 29 | |
| davidwst421 | 0:fd8eda608206 | 30 | // puts paddles and ball in middle |
| davidwst421 | 0:fd8eda608206 | 31 | _w0.init(_w0x,_wall_gap,_wall_width,_speed); |
| davidwst421 | 0:fd8eda608206 | 32 | _w1.init(_w1x,_wall_gap,_wall_width,_speed); |
| davidwst421 | 0:fd8eda608206 | 33 | _w2.init(_w2x,_wall_gap,_wall_width,_speed); |
| davidwst421 | 0:fd8eda608206 | 34 | _w3.init(_w3x,_wall_gap,_wall_width,_speed); |
| davidwst421 | 0:fd8eda608206 | 35 | _w4.init(_w4x,_wall_gap,_wall_width,_speed); |
| davidwst421 | 7:193c0fd7afdd | 36 | _avenger.init(_avengerx); |
| davidwst421 | 0:fd8eda608206 | 37 | _stone.init(_stonex,_stone_size,_speed); |
| davidwst421 | 0:fd8eda608206 | 38 | } |
| davidwst421 | 0:fd8eda608206 | 39 | |
| davidwst421 | 0:fd8eda608206 | 40 | void Engine::read_input(Gamepad &pad) { |
| davidwst421 | 0:fd8eda608206 | 41 | |
| davidwst421 | 0:fd8eda608206 | 42 | _d = pad.get_direction(); |
| davidwst421 | 0:fd8eda608206 | 43 | _mag = pad.get_mag(); |
| davidwst421 | 6:a0f3dbbc8d33 | 44 | _mapped_coord = pad.get_mapped_coord(); |
| davidwst421 | 0:fd8eda608206 | 45 | } |
| davidwst421 | 0:fd8eda608206 | 46 | |
| davidwst421 | 0:fd8eda608206 | 47 | void Engine::draw(N5110 &lcd) { |
| davidwst421 | 0:fd8eda608206 | 48 | // draw the elements in the LCD buffer |
| davidwst421 | 0:fd8eda608206 | 49 | // pitch |
| davidwst421 | 0:fd8eda608206 | 50 | lcd.drawRect(0,0,WIDTH,HEIGHT,FILL_TRANSPARENT); |
| davidwst421 | 0:fd8eda608206 | 51 | //score |
| davidwst421 | 0:fd8eda608206 | 52 | print_score(lcd); |
| davidwst421 | 0:fd8eda608206 | 53 | // wall |
| davidwst421 | 0:fd8eda608206 | 54 | _w0.draw1(lcd); |
| davidwst421 | 0:fd8eda608206 | 55 | _w0.draw2(lcd); |
| davidwst421 | 0:fd8eda608206 | 56 | _w1.draw1(lcd); |
| davidwst421 | 0:fd8eda608206 | 57 | _w1.draw2(lcd); |
| davidwst421 | 0:fd8eda608206 | 58 | _w2.draw1(lcd); |
| davidwst421 | 0:fd8eda608206 | 59 | _w2.draw2(lcd); |
| davidwst421 | 0:fd8eda608206 | 60 | _w3.draw1(lcd); |
| davidwst421 | 0:fd8eda608206 | 61 | _w3.draw2(lcd); |
| davidwst421 | 0:fd8eda608206 | 62 | _w4.draw1(lcd); |
| davidwst421 | 0:fd8eda608206 | 63 | _w4.draw2(lcd); |
| davidwst421 | 0:fd8eda608206 | 64 | // avenger |
| davidwst421 | 0:fd8eda608206 | 65 | _avenger.draw(lcd); |
| davidwst421 | 0:fd8eda608206 | 66 | // stone |
| davidwst421 | 0:fd8eda608206 | 67 | _stone.draw(lcd); |
| davidwst421 | 0:fd8eda608206 | 68 | } |
| davidwst421 | 0:fd8eda608206 | 69 | |
| davidwst421 | 0:fd8eda608206 | 70 | |
| davidwst421 | 0:fd8eda608206 | 71 | void Engine::update(Gamepad &pad) { |
| davidwst421 | 0:fd8eda608206 | 72 | |
| davidwst421 | 0:fd8eda608206 | 73 | // important to update paddles and ball before checking collisions so can |
| davidwst421 | 0:fd8eda608206 | 74 | // correct for it before updating the display |
| davidwst421 | 0:fd8eda608206 | 75 | _w0.update(); |
| davidwst421 | 0:fd8eda608206 | 76 | _w1.update(); |
| davidwst421 | 0:fd8eda608206 | 77 | _w2.update(); |
| davidwst421 | 0:fd8eda608206 | 78 | _w3.update(); |
| davidwst421 | 0:fd8eda608206 | 79 | _w4.update(); |
| davidwst421 | 6:a0f3dbbc8d33 | 80 | _avenger.update(_d,_mag,_mapped_coord); |
| davidwst421 | 0:fd8eda608206 | 81 | _stone.update(); |
| davidwst421 | 0:fd8eda608206 | 82 | check_wall_collision(pad); |
| davidwst421 | 0:fd8eda608206 | 83 | check_score(pad); |
| davidwst421 | 0:fd8eda608206 | 84 | } |
| davidwst421 | 0:fd8eda608206 | 85 | |
| davidwst421 | 0:fd8eda608206 | 86 | void Engine::check_wall_collision(Gamepad &pad) { |
| davidwst421 | 0:fd8eda608206 | 87 | |
| davidwst421 | 0:fd8eda608206 | 88 | // read the current avenger's position |
| davidwst421 | 0:fd8eda608206 | 89 | Vector2D avenger_pos = _avenger.get_pos(); |
| davidwst421 | 0:fd8eda608206 | 90 | |
| davidwst421 | 0:fd8eda608206 | 91 | //read the first wall position |
| davidwst421 | 1:f09ff0ed98fd | 92 | int w0_x = _w0.get_x(); |
| davidwst421 | 1:f09ff0ed98fd | 93 | int w1_x = _w1.get_x(); |
| davidwst421 | 1:f09ff0ed98fd | 94 | int w2_x = _w2.get_x(); |
| davidwst421 | 1:f09ff0ed98fd | 95 | int w3_x = _w3.get_x(); |
| davidwst421 | 1:f09ff0ed98fd | 96 | int w4_x = _w4.get_x(); |
| davidwst421 | 0:fd8eda608206 | 97 | |
| davidwst421 | 1:f09ff0ed98fd | 98 | if (w0_x <= 1) { // 1 due to 1 pixel boundary |
| davidwst421 | 1:f09ff0ed98fd | 99 | _w0.reset(); // bounce off ceiling without going off screen |
| davidwst421 | 1:f09ff0ed98fd | 100 | } |
| davidwst421 | 1:f09ff0ed98fd | 101 | if (w1_x <= 1) { // 1 due to 1 pixel boundary |
| davidwst421 | 2:00a3edbe39b0 | 102 | _w1.reset(); // bounce off ceiling without going off screen |
| davidwst421 | 1:f09ff0ed98fd | 103 | } |
| davidwst421 | 1:f09ff0ed98fd | 104 | if (w2_x <= 1) { // 1 due to 1 pixel boundary |
| davidwst421 | 2:00a3edbe39b0 | 105 | _w2.reset(); // bounce off ceiling without going off screen |
| davidwst421 | 1:f09ff0ed98fd | 106 | } |
| davidwst421 | 1:f09ff0ed98fd | 107 | if (w3_x <= 1) { // 1 due to 1 pixel boundary |
| davidwst421 | 2:00a3edbe39b0 | 108 | _w3.reset(); // bounce off ceiling without going off screen |
| davidwst421 | 1:f09ff0ed98fd | 109 | } |
| davidwst421 | 1:f09ff0ed98fd | 110 | if (w4_x <= 1) { // 1 due to 1 pixel boundary |
| davidwst421 | 2:00a3edbe39b0 | 111 | _w4.reset(); // bounce off ceiling without going off screen |
| davidwst421 | 0:fd8eda608206 | 112 | } |
| davidwst421 | 0:fd8eda608206 | 113 | |
| davidwst421 | 1:f09ff0ed98fd | 114 | int w0_height = _w0.get_height(); |
| davidwst421 | 1:f09ff0ed98fd | 115 | int w1_height = _w1.get_height(); |
| davidwst421 | 1:f09ff0ed98fd | 116 | int w2_height = _w2.get_height(); |
| davidwst421 | 1:f09ff0ed98fd | 117 | int w3_height = _w3.get_height(); |
| davidwst421 | 1:f09ff0ed98fd | 118 | int w4_height = _w4.get_height(); |
| davidwst421 | 0:fd8eda608206 | 119 | |
| davidwst421 | 1:f09ff0ed98fd | 120 | if (( |
| davidwst421 | 12:660458c41c8e | 121 | (avenger_pos.y + 5 >= 0) && (avenger_pos.y + 1 <= w0_height) && //bottom |
| davidwst421 | 8:97576c8761a8 | 122 | (avenger_pos.x + 10 >= _w0.get_x()) && (avenger_pos.x + 10 <= _w0.get_x() + 1) |
| davidwst421 | 1:f09ff0ed98fd | 123 | ) || ( |
| davidwst421 | 12:660458c41c8e | 124 | (avenger_pos.y + 5 >= 0) && (avenger_pos.y + 1 <= w1_height) && //bottom |
| davidwst421 | 8:97576c8761a8 | 125 | (avenger_pos.x + 10 >= _w1.get_x()) && (avenger_pos.x + 10 <= _w1.get_x() + 1) |
| davidwst421 | 1:f09ff0ed98fd | 126 | ) || ( |
| davidwst421 | 12:660458c41c8e | 127 | (avenger_pos.y + 5 >= 0) && (avenger_pos.y + 1 <= w2_height) && //bottom |
| davidwst421 | 8:97576c8761a8 | 128 | (avenger_pos.x + 10 >= _w2.get_x()) && (avenger_pos.x + 10 <= _w2.get_x() + 1) |
| davidwst421 | 1:f09ff0ed98fd | 129 | ) || ( |
| davidwst421 | 12:660458c41c8e | 130 | (avenger_pos.y + 5 >= 0) && (avenger_pos.y + 1 <= w3_height) && //bottom |
| davidwst421 | 8:97576c8761a8 | 131 | (avenger_pos.x + 10 >= _w3.get_x()) && (avenger_pos.x + 10 <= _w3.get_x() + 1) |
| davidwst421 | 1:f09ff0ed98fd | 132 | ) || ( |
| davidwst421 | 12:660458c41c8e | 133 | (avenger_pos.y + 5 >= 0) && (avenger_pos.y + 1 <= w4_height) && //bottom |
| davidwst421 | 8:97576c8761a8 | 134 | (avenger_pos.x + 10 >= _w4.get_x()) && (avenger_pos.x + 10 <= _w4.get_x() + 1) |
| davidwst421 | 1:f09ff0ed98fd | 135 | ) |
| davidwst421 | 1:f09ff0ed98fd | 136 | ) { |
| davidwst421 | 0:fd8eda608206 | 137 | _avenger.lose_score(); |
| davidwst421 | 1:f09ff0ed98fd | 138 | pad.tone(100.0,0.1); |
| davidwst421 | 1:f09ff0ed98fd | 139 | wait(0.1); |
| davidwst421 | 1:f09ff0ed98fd | 140 | pad.tone(200.0,0.1); |
| davidwst421 | 1:f09ff0ed98fd | 141 | wait(0.1); |
| davidwst421 | 1:f09ff0ed98fd | 142 | pad.tone(300.0,0.1); |
| davidwst421 | 1:f09ff0ed98fd | 143 | wait(0.1); |
| davidwst421 | 1:f09ff0ed98fd | 144 | pad.tone(400.0,0.1); |
| davidwst421 | 1:f09ff0ed98fd | 145 | wait(0.1); |
| davidwst421 | 1:f09ff0ed98fd | 146 | pad.tone(500.0,0.1); |
| davidwst421 | 1:f09ff0ed98fd | 147 | wait(0.1); |
| davidwst421 | 0:fd8eda608206 | 148 | } |
| davidwst421 | 0:fd8eda608206 | 149 | |
| davidwst421 | 1:f09ff0ed98fd | 150 | if (( |
| davidwst421 | 12:660458c41c8e | 151 | (avenger_pos.y + 5 >= _wall_gap + w0_height) && (avenger_pos.y + 1 <= HEIGHT) && //bottom |
| davidwst421 | 8:97576c8761a8 | 152 | (avenger_pos.x + 10 >= _w0.get_x()) && (avenger_pos.x + 10 <= _w0.get_x() + 1) |
| davidwst421 | 1:f09ff0ed98fd | 153 | ) || ( |
| davidwst421 | 12:660458c41c8e | 154 | (avenger_pos.y + 5 >= _wall_gap + w1_height) && (avenger_pos.y + 1 <= HEIGHT) && //bottom |
| davidwst421 | 8:97576c8761a8 | 155 | (avenger_pos.x + 10 >= _w1.get_x()) && (avenger_pos.x + 10 <= _w1.get_x() + 1) |
| davidwst421 | 1:f09ff0ed98fd | 156 | ) || ( |
| davidwst421 | 12:660458c41c8e | 157 | (avenger_pos.y + 5 >= _wall_gap + w2_height) && (avenger_pos.y + 1 <= HEIGHT) && //bottom |
| davidwst421 | 8:97576c8761a8 | 158 | (avenger_pos.x + 10 >= _w2.get_x()) && (avenger_pos.x + 10 <= _w2.get_x() + 1) |
| davidwst421 | 1:f09ff0ed98fd | 159 | ) || ( |
| davidwst421 | 12:660458c41c8e | 160 | (avenger_pos.y + 5 >= _wall_gap + w3_height) && (avenger_pos.y + 1 <= HEIGHT) && //bottom |
| davidwst421 | 8:97576c8761a8 | 161 | (avenger_pos.x + 10 >= _w3.get_x()) && (avenger_pos.x + 10 <= _w3.get_x() + 1) |
| davidwst421 | 1:f09ff0ed98fd | 162 | ) || ( |
| davidwst421 | 12:660458c41c8e | 163 | (avenger_pos.y + 5 >= _wall_gap + w4_height) && (avenger_pos.y + 1 <= HEIGHT) && //bottom |
| davidwst421 | 8:97576c8761a8 | 164 | (avenger_pos.x + 10 >= _w4.get_x()) && (avenger_pos.x + 10 <= _w4.get_x() + 1) |
| davidwst421 | 1:f09ff0ed98fd | 165 | ) |
| davidwst421 | 1:f09ff0ed98fd | 166 | ) { |
| davidwst421 | 0:fd8eda608206 | 167 | _avenger.lose_score(); |
| davidwst421 | 1:f09ff0ed98fd | 168 | pad.tone(100.0,0.1); |
| davidwst421 | 1:f09ff0ed98fd | 169 | wait(0.1); |
| davidwst421 | 1:f09ff0ed98fd | 170 | pad.tone(200.0,0.1); |
| davidwst421 | 1:f09ff0ed98fd | 171 | wait(0.1); |
| davidwst421 | 1:f09ff0ed98fd | 172 | pad.tone(300.0,0.1); |
| davidwst421 | 1:f09ff0ed98fd | 173 | wait(0.1); |
| davidwst421 | 1:f09ff0ed98fd | 174 | pad.tone(400.0,0.1); |
| davidwst421 | 1:f09ff0ed98fd | 175 | wait(0.1); |
| davidwst421 | 1:f09ff0ed98fd | 176 | pad.tone(500.0,0.1); |
| davidwst421 | 1:f09ff0ed98fd | 177 | wait(0.1); |
| davidwst421 | 0:fd8eda608206 | 178 | } |
| davidwst421 | 0:fd8eda608206 | 179 | } |
| davidwst421 | 0:fd8eda608206 | 180 | |
| davidwst421 | 0:fd8eda608206 | 181 | void Engine::check_score(Gamepad &pad) { |
| davidwst421 | 0:fd8eda608206 | 182 | |
| davidwst421 | 0:fd8eda608206 | 183 | int avenger_score = _avenger.get_score(); |
| davidwst421 | 0:fd8eda608206 | 184 | |
| davidwst421 | 0:fd8eda608206 | 185 | if (avenger_score == 0) { |
| davidwst421 | 0:fd8eda608206 | 186 | pad.leds_off(); |
| davidwst421 | 0:fd8eda608206 | 187 | } |
| davidwst421 | 0:fd8eda608206 | 188 | if (avenger_score == 1) { |
| davidwst421 | 0:fd8eda608206 | 189 | pad.led(1,1.0f); |
| davidwst421 | 0:fd8eda608206 | 190 | pad.led(2,0.0f); |
| davidwst421 | 0:fd8eda608206 | 191 | pad.led(2,0.0f); |
| davidwst421 | 0:fd8eda608206 | 192 | pad.led(2,0.0f); |
| davidwst421 | 0:fd8eda608206 | 193 | pad.led(2,0.0f); |
| davidwst421 | 0:fd8eda608206 | 194 | pad.led(2,0.0f); |
| davidwst421 | 0:fd8eda608206 | 195 | } |
| davidwst421 | 0:fd8eda608206 | 196 | if (avenger_score == 2) { |
| davidwst421 | 0:fd8eda608206 | 197 | pad.led(1,1.0f); |
| davidwst421 | 0:fd8eda608206 | 198 | pad.led(2,1.0f); |
| davidwst421 | 0:fd8eda608206 | 199 | pad.led(3,0.0f); |
| davidwst421 | 0:fd8eda608206 | 200 | pad.led(4,0.0f); |
| davidwst421 | 0:fd8eda608206 | 201 | pad.led(5,0.0f); |
| davidwst421 | 0:fd8eda608206 | 202 | pad.led(6,0.0f); |
| davidwst421 | 0:fd8eda608206 | 203 | } |
| davidwst421 | 0:fd8eda608206 | 204 | if (avenger_score == 3) { |
| davidwst421 | 0:fd8eda608206 | 205 | pad.led(1,1.0f); |
| davidwst421 | 0:fd8eda608206 | 206 | pad.led(2,1.0f); |
| davidwst421 | 0:fd8eda608206 | 207 | pad.led(3,1.0f); |
| davidwst421 | 0:fd8eda608206 | 208 | pad.led(4,0.0f); |
| davidwst421 | 0:fd8eda608206 | 209 | pad.led(5,0.0f); |
| davidwst421 | 0:fd8eda608206 | 210 | pad.led(6,0.0f); |
| davidwst421 | 0:fd8eda608206 | 211 | } |
| davidwst421 | 0:fd8eda608206 | 212 | if (avenger_score == 4) { |
| davidwst421 | 0:fd8eda608206 | 213 | pad.led(1,1.0f); |
| davidwst421 | 0:fd8eda608206 | 214 | pad.led(2,1.0f); |
| davidwst421 | 0:fd8eda608206 | 215 | pad.led(3,1.0f); |
| davidwst421 | 0:fd8eda608206 | 216 | pad.led(4,1.0f); |
| davidwst421 | 0:fd8eda608206 | 217 | pad.led(5,0.0f); |
| davidwst421 | 0:fd8eda608206 | 218 | pad.led(6,0.0f); |
| davidwst421 | 0:fd8eda608206 | 219 | } |
| davidwst421 | 0:fd8eda608206 | 220 | if (avenger_score == 5) { |
| davidwst421 | 0:fd8eda608206 | 221 | pad.led(1,1.0f); |
| davidwst421 | 0:fd8eda608206 | 222 | pad.led(2,1.0f); |
| davidwst421 | 0:fd8eda608206 | 223 | pad.led(3,1.0f); |
| davidwst421 | 0:fd8eda608206 | 224 | pad.led(4,1.0f); |
| davidwst421 | 0:fd8eda608206 | 225 | pad.led(5,1.0f); |
| davidwst421 | 0:fd8eda608206 | 226 | pad.led(6,0.0f); |
| davidwst421 | 0:fd8eda608206 | 227 | } |
| davidwst421 | 0:fd8eda608206 | 228 | if (avenger_score == 6) { |
| davidwst421 | 0:fd8eda608206 | 229 | pad.led(1,1.0f); |
| davidwst421 | 0:fd8eda608206 | 230 | pad.led(2,1.0f); |
| davidwst421 | 0:fd8eda608206 | 231 | pad.led(3,1.0f); |
| davidwst421 | 0:fd8eda608206 | 232 | pad.led(4,1.0f); |
| davidwst421 | 0:fd8eda608206 | 233 | pad.led(5,1.0f); |
| davidwst421 | 0:fd8eda608206 | 234 | pad.led(6,1.0f); |
| davidwst421 | 0:fd8eda608206 | 235 | } |
| davidwst421 | 0:fd8eda608206 | 236 | |
| davidwst421 | 0:fd8eda608206 | 237 | // check p1 first |
| davidwst421 | 0:fd8eda608206 | 238 | Vector2D avenger_pos = _avenger.get_pos(); |
| davidwst421 | 0:fd8eda608206 | 239 | // read current ball attributes |
| davidwst421 | 0:fd8eda608206 | 240 | Vector2D stone_pos = _stone.get_pos(); |
| davidwst421 | 0:fd8eda608206 | 241 | |
| davidwst421 | 0:fd8eda608206 | 242 | if (stone_pos.x <= 1) { // 1 due to 1 pixel boundary |
| davidwst421 | 0:fd8eda608206 | 243 | _stone.reset(); // bounce off ceiling without going off screen |
| davidwst421 | 0:fd8eda608206 | 244 | } |
| davidwst421 | 0:fd8eda608206 | 245 | |
| davidwst421 | 0:fd8eda608206 | 246 | // see if ball has hit the paddle by checking for overlaps |
| davidwst421 | 0:fd8eda608206 | 247 | if ( |
| davidwst421 | 12:660458c41c8e | 248 | (avenger_pos.y + 4 >= stone_pos.y - _stone_size) && (avenger_pos.y + 2 <= stone_pos.y + _stone_size) |
| davidwst421 | 0:fd8eda608206 | 249 | && //bottom |
| davidwst421 | 8:97576c8761a8 | 250 | (avenger_pos.x + 10 >= stone_pos.x) && (avenger_pos.x + 10 <= stone_pos.x + 2) //right |
| davidwst421 | 0:fd8eda608206 | 251 | ) { |
| davidwst421 | 0:fd8eda608206 | 252 | // if it has, fix position and reflect x velocity |
| davidwst421 | 0:fd8eda608206 | 253 | _avenger.add_score(); |
| davidwst421 | 0:fd8eda608206 | 254 | pad.tone(500.0,0.25); |
| davidwst421 | 0:fd8eda608206 | 255 | wait(0.25); |
| davidwst421 | 0:fd8eda608206 | 256 | pad.tone(1000.0,0.25); |
| davidwst421 | 0:fd8eda608206 | 257 | wait(0.25); |
| davidwst421 | 0:fd8eda608206 | 258 | } |
| davidwst421 | 0:fd8eda608206 | 259 | } |
| davidwst421 | 0:fd8eda608206 | 260 | |
| davidwst421 | 0:fd8eda608206 | 261 | void Engine::print_score(N5110 &lcd) { |
| davidwst421 | 0:fd8eda608206 | 262 | |
| davidwst421 | 0:fd8eda608206 | 263 | // get scores from paddles |
| davidwst421 | 0:fd8eda608206 | 264 | int avenger_score = _avenger.get_score(); |
| davidwst421 | 0:fd8eda608206 | 265 | |
| davidwst421 | 0:fd8eda608206 | 266 | // print to LCD i |
| davidwst421 | 0:fd8eda608206 | 267 | char buffer1[14]; |
| davidwst421 | 0:fd8eda608206 | 268 | sprintf(buffer1,"%2d",avenger_score); |
| davidwst421 | 12:660458c41c8e | 269 | lcd.printString(buffer1,1,0); // font is 8 wide, so leave 4 pixel gape from middle assuming two digits |
| davidwst421 | 4:fcd80b40f257 | 270 | } |
| davidwst421 | 4:fcd80b40f257 | 271 | |
| davidwst421 | 4:fcd80b40f257 | 272 | int Engine::get_score() { |
| davidwst421 | 4:fcd80b40f257 | 273 | return _avenger.get_score(); |
| davidwst421 | 0:fd8eda608206 | 274 | } |