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@11:4e2eb64031a0, 2019-04-13 (annotated)
- Committer:
- el17mcd
- Date:
- Sat Apr 13 16:31:43 2019 +0000
- Revision:
- 11:4e2eb64031a0
- Parent:
- 10:d4fb12e9e7cd
!Can take left tank's turn including movement and firing turret. This transitions into "projectile phase" which ends when the projectile goes out of bounds (off screen). Objects instantiated inside game engine to tidy main.cpp.
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 | 11:4e2eb64031a0 | 7 | |
el17mcd | 7:a3ccabdebe2e | 8 | TankL::TankL() |
el17mcd | 7:a3ccabdebe2e | 9 | { |
el17mcd | 11:4e2eb64031a0 | 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 | 11:4e2eb64031a0 | 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 | 11:4e2eb64031a0 | 56 | int slowness = 9 - _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 | 11:4e2eb64031a0 | 98 | if (_angle >= 72 && _angle < 100 || _angle >= -260 && _angle < -255) { |
el17mcd | 11:4e2eb64031a0 | 99 | const int turret_spr5[5][7] = { |
el17mcd | 10:d4fb12e9e7cd | 100 | { 0,0,1,0,0,0,0 }, |
el17mcd | 11:4e2eb64031a0 | 101 | { 0,0,1,0,0,0,0 }, |
el17mcd | 11:4e2eb64031a0 | 102 | { 0,0,1,0,0,0,0 }, |
el17mcd | 11:4e2eb64031a0 | 103 | { 0,1,1,1,0,0,0 }, |
el17mcd | 10:d4fb12e9e7cd | 104 | { 1,1,1,1,1,1,0 }, |
el17mcd | 10:d4fb12e9e7cd | 105 | }; |
el17mcd | 11:4e2eb64031a0 | 106 | lcd.drawSprite(2 + _position_x,40 - _position_y,5,7,(int *)turret_spr5); |
el17mcd | 11:4e2eb64031a0 | 107 | } |
el17mcd | 10:d4fb12e9e7cd | 108 | else if (_angle >= 18 && _angle < 36) { |
el17mcd | 10:d4fb12e9e7cd | 109 | const int turret_spr2[3][7] = { |
el17mcd | 10:d4fb12e9e7cd | 110 | { 0,0,1,1,1,1,1 }, |
el17mcd | 10:d4fb12e9e7cd | 111 | { 0,1,1,1,1,0,0 }, |
el17mcd | 10:d4fb12e9e7cd | 112 | { 1,1,1,1,1,1,0 }, |
el17mcd | 10:d4fb12e9e7cd | 113 | }; |
el17mcd | 10:d4fb12e9e7cd | 114 | lcd.drawSprite(2 + _position_x,42 - _position_y,3,7,(int *)turret_spr2); |
el17mcd | 10:d4fb12e9e7cd | 115 | } |
el17mcd | 10:d4fb12e9e7cd | 116 | else if (_angle >= 36 && _angle < 54) { |
el17mcd | 10:d4fb12e9e7cd | 117 | const int turret_spr3[4][7] = { |
el17mcd | 10:d4fb12e9e7cd | 118 | { 0,0,0,0,1,0,0 }, |
el17mcd | 10:d4fb12e9e7cd | 119 | { 0,0,1,1,0,0,0 }, |
el17mcd | 10:d4fb12e9e7cd | 120 | { 0,1,1,1,0,0,0 }, |
el17mcd | 10:d4fb12e9e7cd | 121 | { 1,1,1,1,1,1,0 }, |
el17mcd | 10:d4fb12e9e7cd | 122 | }; |
el17mcd | 10:d4fb12e9e7cd | 123 | lcd.drawSprite(2 + _position_x,41 - _position_y,4,7,(int *)turret_spr3); |
el17mcd | 10:d4fb12e9e7cd | 124 | } |
el17mcd | 10:d4fb12e9e7cd | 125 | else if (_angle >= 54 && _angle < 72) { |
el17mcd | 10:d4fb12e9e7cd | 126 | const int turret_spr4[4][7] = { |
el17mcd | 10:d4fb12e9e7cd | 127 | { 0,0,0,1,0,0,0 }, |
el17mcd | 10:d4fb12e9e7cd | 128 | { 0,0,1,1,0,0,0 }, |
el17mcd | 10:d4fb12e9e7cd | 129 | { 0,1,1,1,0,0,0 }, |
el17mcd | 10:d4fb12e9e7cd | 130 | { 1,1,1,1,1,1,0 }, |
el17mcd | 10:d4fb12e9e7cd | 131 | }; |
el17mcd | 10:d4fb12e9e7cd | 132 | lcd.drawSprite(2 + _position_x,41 - _position_y,4,7,(int *)turret_spr4); |
el17mcd | 10:d4fb12e9e7cd | 133 | } |
el17mcd | 10:d4fb12e9e7cd | 134 | else { |
el17mcd | 11:4e2eb64031a0 | 135 | const int turret_spr1[3][7] = { |
el17mcd | 10:d4fb12e9e7cd | 136 | { 0,0,1,0,0,0,0 }, |
el17mcd | 11:4e2eb64031a0 | 137 | { 0,1,1,1,1,1,1 }, |
el17mcd | 10:d4fb12e9e7cd | 138 | { 1,1,1,1,1,1,0 }, |
el17mcd | 10:d4fb12e9e7cd | 139 | }; |
el17mcd | 11:4e2eb64031a0 | 140 | lcd.drawSprite(2 + _position_x,42 - _position_y,3,7,(int *)turret_spr1); |
el17mcd | 11:4e2eb64031a0 | 141 | } |
el17mcd | 7:a3ccabdebe2e | 142 | } |