ELEC2645 (2018/19) / Mbed 2 deprecated EL17MCD

Dependencies:   mbed

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?

UserRevisionLine numberNew 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 }