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
TankL/TankL.cpp@10:d4fb12e9e7cd, 2019-04-12 (annotated)
- Committer:
- el17mcd
- Date:
- Fri Apr 12 12:01:47 2019 +0000
- Revision:
- 10:d4fb12e9e7cd
- Parent:
- 8:d4e419dad90f
- Child:
- 11:4e2eb64031a0
!Tank can move in x direction at a specified speed. Tank sprite updated to include turret at varying angles.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
el17mcd | 7:a3ccabdebe2e | 1 | /* TankL.cpp |
el17mcd | 7:a3ccabdebe2e | 2 | Produces tank on the left side of the |
el17mcd | 7:a3ccabdebe2e | 3 | lcd and dictates it's movement |
el17mcd | 7:a3ccabdebe2e | 4 | 1.4.19 |
el17mcd | 7:a3ccabdebe2e | 5 | */ |
el17mcd | 7:a3ccabdebe2e | 6 | #include "TankL.h" |
el17mcd | 7:a3ccabdebe2e | 7 | /* |
el17mcd | 7:a3ccabdebe2e | 8 | TankL::TankL() |
el17mcd | 7:a3ccabdebe2e | 9 | { |
el17mcd | 7:a3ccabdebe2e | 10 | |
el17mcd | 7:a3ccabdebe2e | 11 | } |
el17mcd | 7:a3ccabdebe2e | 12 | |
el17mcd | 7:a3ccabdebe2e | 13 | TankL::~TankL() |
el17mcd | 7:a3ccabdebe2e | 14 | { |
el17mcd | 7:a3ccabdebe2e | 15 | |
el17mcd | 7:a3ccabdebe2e | 16 | } |
el17mcd | 7:a3ccabdebe2e | 17 | */ |
el17mcd | 7:a3ccabdebe2e | 18 | int TankL::get_position_x() |
el17mcd | 7:a3ccabdebe2e | 19 | { |
el17mcd | 7:a3ccabdebe2e | 20 | return _position_x; |
el17mcd | 7:a3ccabdebe2e | 21 | } |
el17mcd | 7:a3ccabdebe2e | 22 | |
el17mcd | 7:a3ccabdebe2e | 23 | int TankL::get_position_y() |
el17mcd | 7:a3ccabdebe2e | 24 | { |
el17mcd | 7:a3ccabdebe2e | 25 | return _position_y; |
el17mcd | 7:a3ccabdebe2e | 26 | } |
el17mcd | 7:a3ccabdebe2e | 27 | |
el17mcd | 7:a3ccabdebe2e | 28 | int TankL::get_hitbox(int i) |
el17mcd | 7:a3ccabdebe2e | 29 | { |
el17mcd | 7:a3ccabdebe2e | 30 | return _hitbox[i]; |
el17mcd | 7:a3ccabdebe2e | 31 | } |
el17mcd | 7:a3ccabdebe2e | 32 | |
el17mcd | 10:d4fb12e9e7cd | 33 | void TankL::set_position(int x, int y) |
el17mcd | 10:d4fb12e9e7cd | 34 | { |
el17mcd | 10:d4fb12e9e7cd | 35 | _position_x = x; |
el17mcd | 10:d4fb12e9e7cd | 36 | _position_y = y; |
el17mcd | 10:d4fb12e9e7cd | 37 | } |
el17mcd | 10:d4fb12e9e7cd | 38 | |
el17mcd | 7:a3ccabdebe2e | 39 | void TankL::set_health(int h) |
el17mcd | 7:a3ccabdebe2e | 40 | { |
el17mcd | 7:a3ccabdebe2e | 41 | _health = h; |
el17mcd | 7:a3ccabdebe2e | 42 | } |
el17mcd | 7:a3ccabdebe2e | 43 | |
el17mcd | 10:d4fb12e9e7cd | 44 | void TankL::set_speed(int s) |
el17mcd | 10:d4fb12e9e7cd | 45 | { |
el17mcd | 10:d4fb12e9e7cd | 46 | _speed = s; |
el17mcd | 10:d4fb12e9e7cd | 47 | } |
el17mcd | 10:d4fb12e9e7cd | 48 | |
el17mcd | 10:d4fb12e9e7cd | 49 | void TankL::set_angle(float angle) |
el17mcd | 10:d4fb12e9e7cd | 50 | { |
el17mcd | 10:d4fb12e9e7cd | 51 | _angle = angle; |
el17mcd | 10:d4fb12e9e7cd | 52 | } |
el17mcd | 10:d4fb12e9e7cd | 53 | |
el17mcd | 10:d4fb12e9e7cd | 54 | void TankL::move_position(int d) |
el17mcd | 10:d4fb12e9e7cd | 55 | { |
el17mcd | 10:d4fb12e9e7cd | 56 | int slowness = 24 / _speed; |
el17mcd | 10:d4fb12e9e7cd | 57 | int i = _move_counter % slowness; |
el17mcd | 10:d4fb12e9e7cd | 58 | if (d > 0) { |
el17mcd | 10:d4fb12e9e7cd | 59 | if (i == 0) {_position_x++;} |
el17mcd | 10:d4fb12e9e7cd | 60 | _move_counter++; |
el17mcd | 10:d4fb12e9e7cd | 61 | } |
el17mcd | 10:d4fb12e9e7cd | 62 | else if (d < 0) { |
el17mcd | 10:d4fb12e9e7cd | 63 | if (i == 0) {_position_x--;} |
el17mcd | 10:d4fb12e9e7cd | 64 | _move_counter--; |
el17mcd | 10:d4fb12e9e7cd | 65 | } |
el17mcd | 10:d4fb12e9e7cd | 66 | } |
el17mcd | 10:d4fb12e9e7cd | 67 | |
el17mcd | 7:a3ccabdebe2e | 68 | void TankL::lose_health() |
el17mcd | 7:a3ccabdebe2e | 69 | { |
el17mcd | 7:a3ccabdebe2e | 70 | _health--; |
el17mcd | 7:a3ccabdebe2e | 71 | /* if (_health <= 0) right player wins |
el17mcd | 7:a3ccabdebe2e | 72 | {} */ |
el17mcd | 7:a3ccabdebe2e | 73 | } |
el17mcd | 7:a3ccabdebe2e | 74 | |
el17mcd | 7:a3ccabdebe2e | 75 | void TankL::generate_hitbox() |
el17mcd | 7:a3ccabdebe2e | 76 | { |
el17mcd | 7:a3ccabdebe2e | 77 | int i = 0; |
el17mcd | 8:d4e419dad90f | 78 | for (int i0 = 0; i0 < 4; i0++) { |
el17mcd | 7:a3ccabdebe2e | 79 | for (int i1 = 1; i1 < 11; i1++) { |
el17mcd | 8:d4e419dad90f | 80 | _hitbox[i] = (i0 + _position_y) * 84 + _position_x + i1; |
el17mcd | 8:d4e419dad90f | 81 | i++; |
el17mcd | 7:a3ccabdebe2e | 82 | } |
el17mcd | 7:a3ccabdebe2e | 83 | } |
el17mcd | 10:d4fb12e9e7cd | 84 | } |
el17mcd | 10:d4fb12e9e7cd | 85 | |
el17mcd | 10:d4fb12e9e7cd | 86 | void TankL::draw(N5110 &lcd) |
el17mcd | 10:d4fb12e9e7cd | 87 | { |
el17mcd | 10:d4fb12e9e7cd | 88 | const int tank_l_spr[6][10] = { |
el17mcd | 10:d4fb12e9e7cd | 89 | { 0,0,0,1,1,1,0,0,0,0 }, |
el17mcd | 10:d4fb12e9e7cd | 90 | { 0,0,1,1,1,1,1,0,0,0 }, |
el17mcd | 10:d4fb12e9e7cd | 91 | { 0,0,1,1,1,1,1,1,1,0 }, |
el17mcd | 10:d4fb12e9e7cd | 92 | { 1,1,1,1,1,1,1,1,1,1 }, |
el17mcd | 10:d4fb12e9e7cd | 93 | { 1,0,1,0,1,0,1,0,1,0 }, |
el17mcd | 10:d4fb12e9e7cd | 94 | { 0,1,0,1,0,1,0,1,0,0 }, |
el17mcd | 10:d4fb12e9e7cd | 95 | }; |
el17mcd | 10:d4fb12e9e7cd | 96 | lcd.drawSprite(_position_x,42 - _position_y,6,10,(int *)tank_l_spr); |
el17mcd | 10:d4fb12e9e7cd | 97 | |
el17mcd | 10:d4fb12e9e7cd | 98 | if (_angle < 18) { |
el17mcd | 10:d4fb12e9e7cd | 99 | const int turret_spr1[3][7] = { |
el17mcd | 10:d4fb12e9e7cd | 100 | { 0,0,1,0,0,0,0 }, |
el17mcd | 10:d4fb12e9e7cd | 101 | { 0,1,1,1,1,1,1 }, |
el17mcd | 10:d4fb12e9e7cd | 102 | { 1,1,1,1,1,1,0 }, |
el17mcd | 10:d4fb12e9e7cd | 103 | }; |
el17mcd | 10:d4fb12e9e7cd | 104 | lcd.drawSprite(2 + _position_x,42 - _position_y,3,7,(int *)turret_spr1); |
el17mcd | 10:d4fb12e9e7cd | 105 | } |
el17mcd | 10:d4fb12e9e7cd | 106 | else if (_angle >= 18 && _angle < 36) { |
el17mcd | 10:d4fb12e9e7cd | 107 | const int turret_spr2[3][7] = { |
el17mcd | 10:d4fb12e9e7cd | 108 | { 0,0,1,1,1,1,1 }, |
el17mcd | 10:d4fb12e9e7cd | 109 | { 0,1,1,1,1,0,0 }, |
el17mcd | 10:d4fb12e9e7cd | 110 | { 1,1,1,1,1,1,0 }, |
el17mcd | 10:d4fb12e9e7cd | 111 | }; |
el17mcd | 10:d4fb12e9e7cd | 112 | lcd.drawSprite(2 + _position_x,42 - _position_y,3,7,(int *)turret_spr2); |
el17mcd | 10:d4fb12e9e7cd | 113 | } |
el17mcd | 10:d4fb12e9e7cd | 114 | else if (_angle >= 36 && _angle < 54) { |
el17mcd | 10:d4fb12e9e7cd | 115 | const int turret_spr3[4][7] = { |
el17mcd | 10:d4fb12e9e7cd | 116 | { 0,0,0,0,1,0,0 }, |
el17mcd | 10:d4fb12e9e7cd | 117 | { 0,0,1,1,0,0,0 }, |
el17mcd | 10:d4fb12e9e7cd | 118 | { 0,1,1,1,0,0,0 }, |
el17mcd | 10:d4fb12e9e7cd | 119 | { 1,1,1,1,1,1,0 }, |
el17mcd | 10:d4fb12e9e7cd | 120 | }; |
el17mcd | 10:d4fb12e9e7cd | 121 | lcd.drawSprite(2 + _position_x,41 - _position_y,4,7,(int *)turret_spr3); |
el17mcd | 10:d4fb12e9e7cd | 122 | } |
el17mcd | 10:d4fb12e9e7cd | 123 | else if (_angle >= 54 && _angle < 72) { |
el17mcd | 10:d4fb12e9e7cd | 124 | const int turret_spr4[4][7] = { |
el17mcd | 10:d4fb12e9e7cd | 125 | { 0,0,0,1,0,0,0 }, |
el17mcd | 10:d4fb12e9e7cd | 126 | { 0,0,1,1,0,0,0 }, |
el17mcd | 10:d4fb12e9e7cd | 127 | { 0,1,1,1,0,0,0 }, |
el17mcd | 10:d4fb12e9e7cd | 128 | { 1,1,1,1,1,1,0 }, |
el17mcd | 10:d4fb12e9e7cd | 129 | }; |
el17mcd | 10:d4fb12e9e7cd | 130 | lcd.drawSprite(2 + _position_x,41 - _position_y,4,7,(int *)turret_spr4); |
el17mcd | 10:d4fb12e9e7cd | 131 | } |
el17mcd | 10:d4fb12e9e7cd | 132 | else { |
el17mcd | 10:d4fb12e9e7cd | 133 | const int turret_spr5[5][7] = { |
el17mcd | 10:d4fb12e9e7cd | 134 | { 0,0,1,0,0,0,0 }, |
el17mcd | 10:d4fb12e9e7cd | 135 | { 0,0,1,0,0,0,0 }, |
el17mcd | 10:d4fb12e9e7cd | 136 | { 0,0,1,0,0,0,0 }, |
el17mcd | 10:d4fb12e9e7cd | 137 | { 0,1,1,1,0,0,0 }, |
el17mcd | 10:d4fb12e9e7cd | 138 | { 1,1,1,1,1,1,0 }, |
el17mcd | 10:d4fb12e9e7cd | 139 | }; |
el17mcd | 10:d4fb12e9e7cd | 140 | lcd.drawSprite(2 + _position_x,40 - _position_y,5,7,(int *)turret_spr5); |
el17mcd | 10:d4fb12e9e7cd | 141 | } |
el17mcd | 7:a3ccabdebe2e | 142 | } |