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
Eng.cpp@11:9661467412cf, 2020-05-18 (annotated)
- Committer:
- el18jgb
- Date:
- Mon May 18 13:32:55 2020 +0000
- Revision:
- 11:9661467412cf
- Parent:
- 10:6c574b8524df
- Child:
- 12:e3620d33629c
can't see myself on the code website depite many comitts, trying publish to see if thats why;
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
el18jgb | 5:c37f4ed2cad3 | 1 | |
el18jgb | 5:c37f4ed2cad3 | 2 | #include "Eng.h" |
el18jgb | 4:6f898b000797 | 3 | Eng::Eng() |
el18jgb | 4:6f898b000797 | 4 | { |
el18jgb | 4:6f898b000797 | 5 | |
el18jgb | 4:6f898b000797 | 6 | } |
el18jgb | 4:6f898b000797 | 7 | |
el18jgb | 4:6f898b000797 | 8 | Eng::~Eng() |
el18jgb | 4:6f898b000797 | 9 | { |
el18jgb | 4:6f898b000797 | 10 | |
el18jgb | 4:6f898b000797 | 11 | } |
el18jgb | 4:6f898b000797 | 12 | // objects |
el18jgb | 5:c37f4ed2cad3 | 13 | //Gamepad pad; |
el18jgb | 5:c37f4ed2cad3 | 14 | //N5110 lcd; |
el18jgb | 5:c37f4ed2cad3 | 15 | Aim aim; |
el18jgb | 4:6f898b000797 | 16 | Heston heston; |
el18jgb | 7:04a7826ff7e4 | 17 | Pup pup; |
el18jgb | 9:2836fc3d9ede | 18 | Spikes spikes; |
el18jgb | 4:6f898b000797 | 19 | |
el18jgb | 4:6f898b000797 | 20 | |
el18jgb | 5:c37f4ed2cad3 | 21 | void Eng::init() |
el18jgb | 5:c37f4ed2cad3 | 22 | { |
el18jgb | 5:c37f4ed2cad3 | 23 | |
el18jgb | 5:c37f4ed2cad3 | 24 | aim.init(); |
el18jgb | 5:c37f4ed2cad3 | 25 | heston.init(); |
el18jgb | 7:04a7826ff7e4 | 26 | pup.init(); |
el18jgb | 9:2836fc3d9ede | 27 | spikes.init(); |
el18jgb | 7:04a7826ff7e4 | 28 | pupon = 0; |
el18jgb | 7:04a7826ff7e4 | 29 | _tok = 0; |
el18jgb | 7:04a7826ff7e4 | 30 | flag = true; |
el18jgb | 9:2836fc3d9ede | 31 | spike_f =false; |
el18jgb | 4:6f898b000797 | 32 | |
el18jgb | 5:c37f4ed2cad3 | 33 | |
el18jgb | 5:c37f4ed2cad3 | 34 | } |
el18jgb | 5:c37f4ed2cad3 | 35 | |
el18jgb | 5:c37f4ed2cad3 | 36 | //void Eng::read_input(Gamepad &pad); |
el18jgb | 8:0b9a824c75fe | 37 | void Eng::update(Gamepad &pad, int fire, N5110 &lcd) |
el18jgb | 4:6f898b000797 | 38 | { |
el18jgb | 8:0b9a824c75fe | 39 | int shot = fire; |
el18jgb | 8:0b9a824c75fe | 40 | if (shot == 1){ |
el18jgb | 6:d560ecc21ae6 | 41 | aim.draw(lcd, fire); |
el18jgb | 6:d560ecc21ae6 | 42 | lcd.refresh(); |
el18jgb | 10:6c574b8524df | 43 | check_hit(pad, lcd); |
el18jgb | 6:d560ecc21ae6 | 44 | } |
el18jgb | 7:04a7826ff7e4 | 45 | |
el18jgb | 7:04a7826ff7e4 | 46 | int c_score = heston.checkscore(); |
el18jgb | 7:04a7826ff7e4 | 47 | if (c_score%5 == 0 && flag == false){ |
el18jgb | 7:04a7826ff7e4 | 48 | flag = true; |
el18jgb | 7:04a7826ff7e4 | 49 | powerup(lcd, pad); |
el18jgb | 7:04a7826ff7e4 | 50 | } |
el18jgb | 7:04a7826ff7e4 | 51 | if (c_score%5 == 1){ |
el18jgb | 7:04a7826ff7e4 | 52 | flag = false; |
el18jgb | 7:04a7826ff7e4 | 53 | } |
el18jgb | 7:04a7826ff7e4 | 54 | |
el18jgb | 8:0b9a824c75fe | 55 | int strikes = heston.checkstrike(); |
el18jgb | 8:0b9a824c75fe | 56 | |
el18jgb | 7:04a7826ff7e4 | 57 | |
el18jgb | 5:c37f4ed2cad3 | 58 | heston.update(pad); |
el18jgb | 5:c37f4ed2cad3 | 59 | aim.update(pad); |
el18jgb | 9:2836fc3d9ede | 60 | |
el18jgb | 9:2836fc3d9ede | 61 | if (spike_f == true){ |
el18jgb | 9:2836fc3d9ede | 62 | //spikes.update(); |
el18jgb | 9:2836fc3d9ede | 63 | _s1.update(); |
el18jgb | 9:2836fc3d9ede | 64 | _s2.update(); |
el18jgb | 10:6c574b8524df | 65 | check_s_hit(pad); |
el18jgb | 9:2836fc3d9ede | 66 | } |
el18jgb | 5:c37f4ed2cad3 | 67 | } |
el18jgb | 5:c37f4ed2cad3 | 68 | |
el18jgb | 5:c37f4ed2cad3 | 69 | void Eng::draw(N5110 &lcd) |
el18jgb | 5:c37f4ed2cad3 | 70 | { |
el18jgb | 5:c37f4ed2cad3 | 71 | heston.draw(lcd); |
el18jgb | 6:d560ecc21ae6 | 72 | aim.draw(lcd, 0); |
el18jgb | 7:04a7826ff7e4 | 73 | if (pupon == 1){ |
el18jgb | 7:04a7826ff7e4 | 74 | pup.draw(lcd, 0); |
el18jgb | 7:04a7826ff7e4 | 75 | } |
el18jgb | 9:2836fc3d9ede | 76 | if (spike_f == true){ |
el18jgb | 9:2836fc3d9ede | 77 | _s1.draw(lcd); |
el18jgb | 9:2836fc3d9ede | 78 | _s2.draw(lcd); |
el18jgb | 9:2836fc3d9ede | 79 | } |
el18jgb | 10:6c574b8524df | 80 | |
el18jgb | 4:6f898b000797 | 81 | } |
el18jgb | 5:c37f4ed2cad3 | 82 | |
el18jgb | 10:6c574b8524df | 83 | void Eng::check_hit(Gamepad &pad, N5110 &lcd) |
el18jgb | 5:c37f4ed2cad3 | 84 | { |
el18jgb | 5:c37f4ed2cad3 | 85 | Vector2D aim_pos = aim.get_pos(); |
el18jgb | 5:c37f4ed2cad3 | 86 | Vector2D h1_pos = heston.get_pos(); |
el18jgb | 7:04a7826ff7e4 | 87 | Vector2D pup_pos = pup.get_pos(); |
el18jgb | 5:c37f4ed2cad3 | 88 | |
el18jgb | 5:c37f4ed2cad3 | 89 | if ( |
el18jgb | 5:c37f4ed2cad3 | 90 | (aim_pos.y >= h1_pos.y) && //top |
el18jgb | 10:6c574b8524df | 91 | (aim_pos.y <= h1_pos.y + 12) && //bottom |
el18jgb | 5:c37f4ed2cad3 | 92 | (aim_pos.x >= h1_pos.x) && //left |
el18jgb | 10:6c574b8524df | 93 | (aim_pos.x <= h1_pos.x + 11) //right |
el18jgb | 5:c37f4ed2cad3 | 94 | ) { |
el18jgb | 5:c37f4ed2cad3 | 95 | heston.hit(pad); |
el18jgb | 11:9661467412cf | 96 | print_score(lcd); |
el18jgb | 11:9661467412cf | 97 | lcd.refresh(); |
el18jgb | 7:04a7826ff7e4 | 98 | } |
el18jgb | 8:0b9a824c75fe | 99 | else if ( |
el18jgb | 7:04a7826ff7e4 | 100 | (pupon == 1) && |
el18jgb | 7:04a7826ff7e4 | 101 | (aim_pos.y >= pup_pos.y) && //top |
el18jgb | 7:04a7826ff7e4 | 102 | (aim_pos.y <= pup_pos.y + 8) && //bottom |
el18jgb | 7:04a7826ff7e4 | 103 | (aim_pos.x >= pup_pos.x) && //left |
el18jgb | 7:04a7826ff7e4 | 104 | (aim_pos.x <= pup_pos.x + 8) //right |
el18jgb | 7:04a7826ff7e4 | 105 | ) { |
el18jgb | 7:04a7826ff7e4 | 106 | pupon = 0; |
el18jgb | 7:04a7826ff7e4 | 107 | heston.set_speed(0); |
el18jgb | 7:04a7826ff7e4 | 108 | pad.led(2,1); |
el18jgb | 7:04a7826ff7e4 | 109 | pad.led(5,1); |
el18jgb | 7:04a7826ff7e4 | 110 | } |
el18jgb | 7:04a7826ff7e4 | 111 | else { |
el18jgb | 7:04a7826ff7e4 | 112 | heston.miss(pad); |
el18jgb | 11:9661467412cf | 113 | print_strike(lcd); |
el18jgb | 10:6c574b8524df | 114 | lcd.refresh(); |
el18jgb | 7:04a7826ff7e4 | 115 | } |
el18jgb | 8:0b9a824c75fe | 116 | wait(0.4); |
el18jgb | 8:0b9a824c75fe | 117 | pad.leds_off(); |
el18jgb | 5:c37f4ed2cad3 | 118 | } |
el18jgb | 5:c37f4ed2cad3 | 119 | |
el18jgb | 7:04a7826ff7e4 | 120 | void Eng::powerup(N5110 &lcd, Gamepad &pad) |
el18jgb | 7:04a7826ff7e4 | 121 | { |
el18jgb | 7:04a7826ff7e4 | 122 | Vector2D aim_pos = aim.get_pos(); |
el18jgb | 7:04a7826ff7e4 | 123 | int x = aim_pos.x; |
el18jgb | 7:04a7826ff7e4 | 124 | int y = aim_pos.y; |
el18jgb | 7:04a7826ff7e4 | 125 | pup.position(x, y); |
el18jgb | 7:04a7826ff7e4 | 126 | pupon = 1; |
el18jgb | 5:c37f4ed2cad3 | 127 | } |
el18jgb | 7:04a7826ff7e4 | 128 | |
el18jgb | 7:04a7826ff7e4 | 129 | void Eng::tik() |
el18jgb | 7:04a7826ff7e4 | 130 | { |
el18jgb | 7:04a7826ff7e4 | 131 | _tok = _tok + 1; |
el18jgb | 7:04a7826ff7e4 | 132 | int rem = _tok%50; |
el18jgb | 7:04a7826ff7e4 | 133 | if (rem == 0){ |
el18jgb | 7:04a7826ff7e4 | 134 | heston.set_speed(1); |
el18jgb | 9:2836fc3d9ede | 135 | spike_f = true; |
el18jgb | 9:2836fc3d9ede | 136 | _s1.position(1); |
el18jgb | 9:2836fc3d9ede | 137 | _s2.position(2); |
el18jgb | 7:04a7826ff7e4 | 138 | } |
el18jgb | 7:04a7826ff7e4 | 139 | } |
el18jgb | 8:0b9a824c75fe | 140 | |
el18jgb | 11:9661467412cf | 141 | void Eng::print_strike(N5110 &lcd) |
el18jgb | 11:9661467412cf | 142 | { |
el18jgb | 11:9661467412cf | 143 | // get scores from paddles |
el18jgb | 11:9661467412cf | 144 | int g_score = heston.checkstrike(); |
el18jgb | 11:9661467412cf | 145 | |
el18jgb | 11:9661467412cf | 146 | // print to LCD i |
el18jgb | 11:9661467412cf | 147 | char buffer1[14]; |
el18jgb | 11:9661467412cf | 148 | sprintf(buffer1,"%2d",g_score); |
el18jgb | 11:9661467412cf | 149 | lcd.printString(buffer1,1,1); // font is 8 wide, so leave 4 pixel gape from middle assuming two digits |
el18jgb | 11:9661467412cf | 150 | } |
el18jgb | 11:9661467412cf | 151 | |
el18jgb | 8:0b9a824c75fe | 152 | void Eng::print_score(N5110 &lcd) |
el18jgb | 8:0b9a824c75fe | 153 | { |
el18jgb | 8:0b9a824c75fe | 154 | // get scores from paddles |
el18jgb | 11:9661467412cf | 155 | int g_score = heston.checkscore(); |
el18jgb | 8:0b9a824c75fe | 156 | |
el18jgb | 8:0b9a824c75fe | 157 | // print to LCD i |
el18jgb | 8:0b9a824c75fe | 158 | char buffer1[14]; |
el18jgb | 8:0b9a824c75fe | 159 | sprintf(buffer1,"%2d",g_score); |
el18jgb | 8:0b9a824c75fe | 160 | lcd.printString(buffer1,1,1); // font is 8 wide, so leave 4 pixel gape from middle assuming two digits |
el18jgb | 9:2836fc3d9ede | 161 | } |
el18jgb | 9:2836fc3d9ede | 162 | |
el18jgb | 10:6c574b8524df | 163 | void Eng::check_s_hit(Gamepad &pad){ |
el18jgb | 9:2836fc3d9ede | 164 | Vector2D s1_pos = _s1.get_pos(); |
el18jgb | 9:2836fc3d9ede | 165 | Vector2D s2_pos = _s2.get_pos(); |
el18jgb | 9:2836fc3d9ede | 166 | Vector2D aim_pos = aim.get_pos(); |
el18jgb | 9:2836fc3d9ede | 167 | |
el18jgb | 9:2836fc3d9ede | 168 | if ( |
el18jgb | 9:2836fc3d9ede | 169 | (aim_pos.y >= s1_pos.y) && //top |
el18jgb | 9:2836fc3d9ede | 170 | (aim_pos.y <= s1_pos.y + 4) && //bottom |
el18jgb | 9:2836fc3d9ede | 171 | (aim_pos.x >= s1_pos.x) && //left |
el18jgb | 9:2836fc3d9ede | 172 | (aim_pos.x <= s1_pos.x + 4) //right |
el18jgb | 9:2836fc3d9ede | 173 | ) { |
el18jgb | 9:2836fc3d9ede | 174 | spike_f = false; |
el18jgb | 10:6c574b8524df | 175 | spikes.hit(pad); |
el18jgb | 9:2836fc3d9ede | 176 | } |
el18jgb | 9:2836fc3d9ede | 177 | if ( |
el18jgb | 9:2836fc3d9ede | 178 | (aim_pos.y >= s2_pos.y) && //top |
el18jgb | 9:2836fc3d9ede | 179 | (aim_pos.y <= s2_pos.y + 4) && //bottom |
el18jgb | 9:2836fc3d9ede | 180 | (aim_pos.x >= s2_pos.x) && //left |
el18jgb | 9:2836fc3d9ede | 181 | (aim_pos.x <= s2_pos.x + 4) //right |
el18jgb | 9:2836fc3d9ede | 182 | ) { |
el18jgb | 9:2836fc3d9ede | 183 | spike_f = false; |
el18jgb | 10:6c574b8524df | 184 | spikes.hit(pad); |
el18jgb | 9:2836fc3d9ede | 185 | } |
el18jgb | 9:2836fc3d9ede | 186 | |
el18jgb | 9:2836fc3d9ede | 187 | |
el18jgb | 9:2836fc3d9ede | 188 | } |