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
Tank/Tank.cpp@16:a2c945279b79, 2019-04-24 (annotated)
- Committer:
- el17mcd
- Date:
- Wed Apr 24 13:44:12 2019 +0000
- Revision:
- 16:a2c945279b79
- Parent:
- 15:fa5282fcd134
- Child:
- 17:cb39d9fa08dc
! Player now receives score at the end of the game. leaderboard added in the menus.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
el17mcd | 12:9e6d5d0a0c82 | 1 | /* Tank.cpp |
el17mcd | 16:a2c945279b79 | 2 | Produces a tank object |
el17mcd | 16:a2c945279b79 | 3 | and dictates it's movement |
el17mcd | 7:a3ccabdebe2e | 4 | 1.4.19 |
el17mcd | 7:a3ccabdebe2e | 5 | */ |
el17mcd | 12:9e6d5d0a0c82 | 6 | #include "Tank.h" |
el17mcd | 11:4e2eb64031a0 | 7 | |
el17mcd | 12:9e6d5d0a0c82 | 8 | Tank::Tank() |
el17mcd | 7:a3ccabdebe2e | 9 | { |
el17mcd | 15:fa5282fcd134 | 10 | _speed = 1; |
el17mcd | 7:a3ccabdebe2e | 11 | } |
el17mcd | 7:a3ccabdebe2e | 12 | |
el17mcd | 12:9e6d5d0a0c82 | 13 | Tank::~Tank() |
el17mcd | 7:a3ccabdebe2e | 14 | { |
el17mcd | 7:a3ccabdebe2e | 15 | |
el17mcd | 7:a3ccabdebe2e | 16 | } |
el17mcd | 15:fa5282fcd134 | 17 | // Accessors |
el17mcd | 12:9e6d5d0a0c82 | 18 | int Tank::get_position_x() |
el17mcd | 7:a3ccabdebe2e | 19 | { |
el17mcd | 7:a3ccabdebe2e | 20 | return _position_x; |
el17mcd | 7:a3ccabdebe2e | 21 | } |
el17mcd | 7:a3ccabdebe2e | 22 | |
el17mcd | 12:9e6d5d0a0c82 | 23 | int Tank::get_position_y() |
el17mcd | 7:a3ccabdebe2e | 24 | { |
el17mcd | 7:a3ccabdebe2e | 25 | return _position_y; |
el17mcd | 7:a3ccabdebe2e | 26 | } |
el17mcd | 7:a3ccabdebe2e | 27 | |
el17mcd | 12:9e6d5d0a0c82 | 28 | int Tank::get_hitbox(int i) |
el17mcd | 7:a3ccabdebe2e | 29 | { |
el17mcd | 7:a3ccabdebe2e | 30 | return _hitbox[i]; |
el17mcd | 7:a3ccabdebe2e | 31 | } |
el17mcd | 7:a3ccabdebe2e | 32 | |
el17mcd | 12:9e6d5d0a0c82 | 33 | int Tank::get_health() |
el17mcd | 12:9e6d5d0a0c82 | 34 | { |
el17mcd | 12:9e6d5d0a0c82 | 35 | return _health; |
el17mcd | 12:9e6d5d0a0c82 | 36 | } |
el17mcd | 15:fa5282fcd134 | 37 | // Mutators |
el17mcd | 12:9e6d5d0a0c82 | 38 | void Tank::set_position(int x, int y) |
el17mcd | 10:d4fb12e9e7cd | 39 | { |
el17mcd | 10:d4fb12e9e7cd | 40 | _position_x = x; |
el17mcd | 10:d4fb12e9e7cd | 41 | _position_y = y; |
el17mcd | 13:feadff02d3f7 | 42 | } |
el17mcd | 13:feadff02d3f7 | 43 | |
el17mcd | 13:feadff02d3f7 | 44 | void Tank::set_movement_limits(int left, int right) |
el17mcd | 13:feadff02d3f7 | 45 | { |
el17mcd | 13:feadff02d3f7 | 46 | _left_lim = left; |
el17mcd | 13:feadff02d3f7 | 47 | _right_lim = right; |
el17mcd | 10:d4fb12e9e7cd | 48 | } |
el17mcd | 10:d4fb12e9e7cd | 49 | |
el17mcd | 12:9e6d5d0a0c82 | 50 | void Tank::set_health(int h) |
el17mcd | 7:a3ccabdebe2e | 51 | { |
el17mcd | 7:a3ccabdebe2e | 52 | _health = h; |
el17mcd | 7:a3ccabdebe2e | 53 | } |
el17mcd | 7:a3ccabdebe2e | 54 | |
el17mcd | 12:9e6d5d0a0c82 | 55 | void Tank::set_speed(int s) |
el17mcd | 10:d4fb12e9e7cd | 56 | { |
el17mcd | 10:d4fb12e9e7cd | 57 | _speed = s; |
el17mcd | 10:d4fb12e9e7cd | 58 | } |
el17mcd | 16:a2c945279b79 | 59 | // Other Methods |
el17mcd | 12:9e6d5d0a0c82 | 60 | void Tank::move_position(int d) |
el17mcd | 10:d4fb12e9e7cd | 61 | { |
el17mcd | 11:4e2eb64031a0 | 62 | int slowness = 9 - _speed; |
el17mcd | 10:d4fb12e9e7cd | 63 | int i = _move_counter % slowness; |
el17mcd | 10:d4fb12e9e7cd | 64 | if (d > 0) { |
el17mcd | 16:a2c945279b79 | 65 | _move_counter++; |
el17mcd | 16:a2c945279b79 | 66 | if (i == 0 && _position_x < _right_lim) { |
el17mcd | 16:a2c945279b79 | 67 | _position_x++; |
el17mcd | 16:a2c945279b79 | 68 | } |
el17mcd | 10:d4fb12e9e7cd | 69 | } |
el17mcd | 16:a2c945279b79 | 70 | else if (d < 0) { |
el17mcd | 16:a2c945279b79 | 71 | _move_counter--; |
el17mcd | 16:a2c945279b79 | 72 | if (i == 0 && _position_x > _left_lim) { |
el17mcd | 16:a2c945279b79 | 73 | _position_x--; |
el17mcd | 16:a2c945279b79 | 74 | } |
el17mcd | 13:feadff02d3f7 | 75 | } |
el17mcd | 10:d4fb12e9e7cd | 76 | } |
el17mcd | 16:a2c945279b79 | 77 | |
el17mcd | 12:9e6d5d0a0c82 | 78 | void Tank::lose_health() |
el17mcd | 7:a3ccabdebe2e | 79 | { |
el17mcd | 7:a3ccabdebe2e | 80 | _health--; |
el17mcd | 7:a3ccabdebe2e | 81 | } |
el17mcd | 7:a3ccabdebe2e | 82 | |
el17mcd | 12:9e6d5d0a0c82 | 83 | void Tank::generate_hitbox() |
el17mcd | 7:a3ccabdebe2e | 84 | { |
el17mcd | 7:a3ccabdebe2e | 85 | int i = 0; |
el17mcd | 8:d4e419dad90f | 86 | for (int i0 = 0; i0 < 4; i0++) { |
el17mcd | 7:a3ccabdebe2e | 87 | for (int i1 = 1; i1 < 11; i1++) { |
el17mcd | 8:d4e419dad90f | 88 | _hitbox[i] = (i0 + _position_y) * 84 + _position_x + i1; |
el17mcd | 8:d4e419dad90f | 89 | i++; |
el17mcd | 7:a3ccabdebe2e | 90 | } |
el17mcd | 7:a3ccabdebe2e | 91 | } |
el17mcd | 7:a3ccabdebe2e | 92 | } |