ELEC2645 (2018/19) / Mbed 2 deprecated EL17MCD

Dependencies:   mbed

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?

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