ELEC2645 (2018/19) / Mbed 2 deprecated EL17MCD

Dependencies:   mbed

Committer:
el17mcd
Date:
Wed Apr 17 14:03:14 2019 +0000
Revision:
13:feadff02d3f7
Parent:
TankL/Tank.cpp@12:9e6d5d0a0c82
Child:
15:fa5282fcd134
! Tank's Health displayed on gamepad LEDs. Change the 'power' of the tanks shots (potentiometer controls velocity). Tanks cannot move outside of screen or across map object.

Who changed what in which revision?

UserRevisionLine numberNew 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 11:4e2eb64031a0 10
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 11:4e2eb64031a0 17
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 12:9e6d5d0a0c82 37
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 10:d4fb12e9e7cd 59
el17mcd 12:9e6d5d0a0c82 60 void Tank::set_angle(float angle)
el17mcd 10:d4fb12e9e7cd 61 {
el17mcd 10:d4fb12e9e7cd 62 _angle = angle;
el17mcd 10:d4fb12e9e7cd 63 }
el17mcd 10:d4fb12e9e7cd 64
el17mcd 13:feadff02d3f7 65 void Tank::_limit_movement()
el17mcd 13:feadff02d3f7 66 {
el17mcd 13:feadff02d3f7 67 if (_position_x == _left_lim - 1) {
el17mcd 13:feadff02d3f7 68 _position_x = _left_lim;
el17mcd 13:feadff02d3f7 69 } else if (_position_x == _right_lim + 1) {
el17mcd 13:feadff02d3f7 70 _position_x = _right_lim;
el17mcd 13:feadff02d3f7 71 }
el17mcd 13:feadff02d3f7 72 }
el17mcd 13:feadff02d3f7 73
el17mcd 12:9e6d5d0a0c82 74 void Tank::move_position(int d)
el17mcd 10:d4fb12e9e7cd 75 {
el17mcd 11:4e2eb64031a0 76 int slowness = 9 - _speed;
el17mcd 10:d4fb12e9e7cd 77 int i = _move_counter % slowness;
el17mcd 10:d4fb12e9e7cd 78 if (d > 0) {
el17mcd 10:d4fb12e9e7cd 79 if (i == 0) {_position_x++;}
el17mcd 10:d4fb12e9e7cd 80 _move_counter++;
el17mcd 10:d4fb12e9e7cd 81 }
el17mcd 10:d4fb12e9e7cd 82 else if (d < 0) {
el17mcd 10:d4fb12e9e7cd 83 if (i == 0) {_position_x--;}
el17mcd 10:d4fb12e9e7cd 84 _move_counter--;
el17mcd 13:feadff02d3f7 85 }
el17mcd 13:feadff02d3f7 86 _limit_movement();
el17mcd 10:d4fb12e9e7cd 87 }
el17mcd 10:d4fb12e9e7cd 88
el17mcd 12:9e6d5d0a0c82 89 void Tank::lose_health()
el17mcd 7:a3ccabdebe2e 90 {
el17mcd 7:a3ccabdebe2e 91 _health--;
el17mcd 7:a3ccabdebe2e 92 /* if (_health <= 0) right player wins
el17mcd 7:a3ccabdebe2e 93 {} */
el17mcd 7:a3ccabdebe2e 94 }
el17mcd 7:a3ccabdebe2e 95
el17mcd 12:9e6d5d0a0c82 96 void Tank::generate_hitbox()
el17mcd 7:a3ccabdebe2e 97 {
el17mcd 7:a3ccabdebe2e 98 int i = 0;
el17mcd 8:d4e419dad90f 99 for (int i0 = 0; i0 < 4; i0++) {
el17mcd 7:a3ccabdebe2e 100 for (int i1 = 1; i1 < 11; i1++) {
el17mcd 8:d4e419dad90f 101 _hitbox[i] = (i0 + _position_y) * 84 + _position_x + i1;
el17mcd 8:d4e419dad90f 102 i++;
el17mcd 7:a3ccabdebe2e 103 }
el17mcd 7:a3ccabdebe2e 104 }
el17mcd 7:a3ccabdebe2e 105 }