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@15:fa5282fcd134, 2019-04-19 (annotated)
- Committer:
- el17mcd
- Date:
- Fri Apr 19 15:58:51 2019 +0000
- Revision:
- 15:fa5282fcd134
- Parent:
- 13:feadff02d3f7
- Child:
- 16:a2c945279b79
! New Menus class that holds the menus for the game. Settings menu to toggle sound, change contrast and number of lives players start with.
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| el17mcd | 12:9e6d5d0a0c82 | 1 | /* Tank.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 | 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 | 15:fa5282fcd134 | 59 | // Movement |
| el17mcd | 13:feadff02d3f7 | 60 | void Tank::_limit_movement() |
| el17mcd | 13:feadff02d3f7 | 61 | { |
| el17mcd | 13:feadff02d3f7 | 62 | if (_position_x == _left_lim - 1) { |
| el17mcd | 13:feadff02d3f7 | 63 | _position_x = _left_lim; |
| el17mcd | 13:feadff02d3f7 | 64 | } else if (_position_x == _right_lim + 1) { |
| el17mcd | 13:feadff02d3f7 | 65 | _position_x = _right_lim; |
| el17mcd | 13:feadff02d3f7 | 66 | } |
| el17mcd | 13:feadff02d3f7 | 67 | } |
| el17mcd | 13:feadff02d3f7 | 68 | |
| el17mcd | 12:9e6d5d0a0c82 | 69 | void Tank::move_position(int d) |
| el17mcd | 10:d4fb12e9e7cd | 70 | { |
| el17mcd | 11:4e2eb64031a0 | 71 | int slowness = 9 - _speed; |
| el17mcd | 10:d4fb12e9e7cd | 72 | int i = _move_counter % slowness; |
| el17mcd | 10:d4fb12e9e7cd | 73 | if (d > 0) { |
| el17mcd | 10:d4fb12e9e7cd | 74 | if (i == 0) {_position_x++;} |
| el17mcd | 10:d4fb12e9e7cd | 75 | _move_counter++; |
| el17mcd | 10:d4fb12e9e7cd | 76 | } |
| el17mcd | 10:d4fb12e9e7cd | 77 | else if (d < 0) { |
| el17mcd | 10:d4fb12e9e7cd | 78 | if (i == 0) {_position_x--;} |
| el17mcd | 10:d4fb12e9e7cd | 79 | _move_counter--; |
| el17mcd | 13:feadff02d3f7 | 80 | } |
| el17mcd | 13:feadff02d3f7 | 81 | _limit_movement(); |
| el17mcd | 10:d4fb12e9e7cd | 82 | } |
| el17mcd | 15:fa5282fcd134 | 83 | // Other Methods |
| el17mcd | 12:9e6d5d0a0c82 | 84 | void Tank::lose_health() |
| el17mcd | 7:a3ccabdebe2e | 85 | { |
| el17mcd | 7:a3ccabdebe2e | 86 | _health--; |
| el17mcd | 7:a3ccabdebe2e | 87 | } |
| el17mcd | 7:a3ccabdebe2e | 88 | |
| el17mcd | 12:9e6d5d0a0c82 | 89 | void Tank::generate_hitbox() |
| el17mcd | 7:a3ccabdebe2e | 90 | { |
| el17mcd | 7:a3ccabdebe2e | 91 | int i = 0; |
| el17mcd | 8:d4e419dad90f | 92 | for (int i0 = 0; i0 < 4; i0++) { |
| el17mcd | 7:a3ccabdebe2e | 93 | for (int i1 = 1; i1 < 11; i1++) { |
| el17mcd | 8:d4e419dad90f | 94 | _hitbox[i] = (i0 + _position_y) * 84 + _position_x + i1; |
| el17mcd | 8:d4e419dad90f | 95 | i++; |
| el17mcd | 7:a3ccabdebe2e | 96 | } |
| el17mcd | 7:a3ccabdebe2e | 97 | } |
| el17mcd | 7:a3ccabdebe2e | 98 | } |