ELEC2645 (2018/19) / Mbed 2 deprecated EL17MCD

Dependencies:   mbed

Committer:
el17mcd
Date:
Sat Apr 13 16:31:43 2019 +0000
Revision:
11:4e2eb64031a0
Parent:
10:d4fb12e9e7cd
!Can take left tank's turn including movement and firing turret. This transitions into "projectile phase" which ends when the projectile goes out of bounds (off screen).  Objects instantiated inside game engine to tidy main.cpp.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
el17mcd 7:a3ccabdebe2e 1 /* TankL.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 7:a3ccabdebe2e 6 #include "TankL.h"
el17mcd 11:4e2eb64031a0 7
el17mcd 7:a3ccabdebe2e 8 TankL::TankL()
el17mcd 7:a3ccabdebe2e 9 {
el17mcd 11:4e2eb64031a0 10
el17mcd 7:a3ccabdebe2e 11 }
el17mcd 7:a3ccabdebe2e 12
el17mcd 7:a3ccabdebe2e 13 TankL::~TankL()
el17mcd 7:a3ccabdebe2e 14 {
el17mcd 7:a3ccabdebe2e 15
el17mcd 7:a3ccabdebe2e 16 }
el17mcd 11:4e2eb64031a0 17
el17mcd 7:a3ccabdebe2e 18 int TankL::get_position_x()
el17mcd 7:a3ccabdebe2e 19 {
el17mcd 7:a3ccabdebe2e 20 return _position_x;
el17mcd 7:a3ccabdebe2e 21 }
el17mcd 7:a3ccabdebe2e 22
el17mcd 7:a3ccabdebe2e 23 int TankL::get_position_y()
el17mcd 7:a3ccabdebe2e 24 {
el17mcd 7:a3ccabdebe2e 25 return _position_y;
el17mcd 7:a3ccabdebe2e 26 }
el17mcd 7:a3ccabdebe2e 27
el17mcd 7:a3ccabdebe2e 28 int TankL::get_hitbox(int i)
el17mcd 7:a3ccabdebe2e 29 {
el17mcd 7:a3ccabdebe2e 30 return _hitbox[i];
el17mcd 7:a3ccabdebe2e 31 }
el17mcd 7:a3ccabdebe2e 32
el17mcd 10:d4fb12e9e7cd 33 void TankL::set_position(int x, int y)
el17mcd 10:d4fb12e9e7cd 34 {
el17mcd 10:d4fb12e9e7cd 35 _position_x = x;
el17mcd 10:d4fb12e9e7cd 36 _position_y = y;
el17mcd 10:d4fb12e9e7cd 37 }
el17mcd 10:d4fb12e9e7cd 38
el17mcd 7:a3ccabdebe2e 39 void TankL::set_health(int h)
el17mcd 7:a3ccabdebe2e 40 {
el17mcd 7:a3ccabdebe2e 41 _health = h;
el17mcd 7:a3ccabdebe2e 42 }
el17mcd 7:a3ccabdebe2e 43
el17mcd 10:d4fb12e9e7cd 44 void TankL::set_speed(int s)
el17mcd 10:d4fb12e9e7cd 45 {
el17mcd 10:d4fb12e9e7cd 46 _speed = s;
el17mcd 10:d4fb12e9e7cd 47 }
el17mcd 10:d4fb12e9e7cd 48
el17mcd 10:d4fb12e9e7cd 49 void TankL::set_angle(float angle)
el17mcd 10:d4fb12e9e7cd 50 {
el17mcd 10:d4fb12e9e7cd 51 _angle = angle;
el17mcd 10:d4fb12e9e7cd 52 }
el17mcd 10:d4fb12e9e7cd 53
el17mcd 10:d4fb12e9e7cd 54 void TankL::move_position(int d)
el17mcd 10:d4fb12e9e7cd 55 {
el17mcd 11:4e2eb64031a0 56 int slowness = 9 - _speed;
el17mcd 10:d4fb12e9e7cd 57 int i = _move_counter % slowness;
el17mcd 10:d4fb12e9e7cd 58 if (d > 0) {
el17mcd 10:d4fb12e9e7cd 59 if (i == 0) {_position_x++;}
el17mcd 10:d4fb12e9e7cd 60 _move_counter++;
el17mcd 10:d4fb12e9e7cd 61 }
el17mcd 10:d4fb12e9e7cd 62 else if (d < 0) {
el17mcd 10:d4fb12e9e7cd 63 if (i == 0) {_position_x--;}
el17mcd 10:d4fb12e9e7cd 64 _move_counter--;
el17mcd 10:d4fb12e9e7cd 65 }
el17mcd 10:d4fb12e9e7cd 66 }
el17mcd 10:d4fb12e9e7cd 67
el17mcd 7:a3ccabdebe2e 68 void TankL::lose_health()
el17mcd 7:a3ccabdebe2e 69 {
el17mcd 7:a3ccabdebe2e 70 _health--;
el17mcd 7:a3ccabdebe2e 71 /* if (_health <= 0) right player wins
el17mcd 7:a3ccabdebe2e 72 {} */
el17mcd 7:a3ccabdebe2e 73 }
el17mcd 7:a3ccabdebe2e 74
el17mcd 7:a3ccabdebe2e 75 void TankL::generate_hitbox()
el17mcd 7:a3ccabdebe2e 76 {
el17mcd 7:a3ccabdebe2e 77 int i = 0;
el17mcd 8:d4e419dad90f 78 for (int i0 = 0; i0 < 4; i0++) {
el17mcd 7:a3ccabdebe2e 79 for (int i1 = 1; i1 < 11; i1++) {
el17mcd 8:d4e419dad90f 80 _hitbox[i] = (i0 + _position_y) * 84 + _position_x + i1;
el17mcd 8:d4e419dad90f 81 i++;
el17mcd 7:a3ccabdebe2e 82 }
el17mcd 7:a3ccabdebe2e 83 }
el17mcd 10:d4fb12e9e7cd 84 }
el17mcd 10:d4fb12e9e7cd 85
el17mcd 10:d4fb12e9e7cd 86 void TankL::draw(N5110 &lcd)
el17mcd 10:d4fb12e9e7cd 87 {
el17mcd 10:d4fb12e9e7cd 88 const int tank_l_spr[6][10] = {
el17mcd 10:d4fb12e9e7cd 89 { 0,0,0,1,1,1,0,0,0,0 },
el17mcd 10:d4fb12e9e7cd 90 { 0,0,1,1,1,1,1,0,0,0 },
el17mcd 10:d4fb12e9e7cd 91 { 0,0,1,1,1,1,1,1,1,0 },
el17mcd 10:d4fb12e9e7cd 92 { 1,1,1,1,1,1,1,1,1,1 },
el17mcd 10:d4fb12e9e7cd 93 { 1,0,1,0,1,0,1,0,1,0 },
el17mcd 10:d4fb12e9e7cd 94 { 0,1,0,1,0,1,0,1,0,0 },
el17mcd 10:d4fb12e9e7cd 95 };
el17mcd 10:d4fb12e9e7cd 96 lcd.drawSprite(_position_x,42 - _position_y,6,10,(int *)tank_l_spr);
el17mcd 10:d4fb12e9e7cd 97
el17mcd 11:4e2eb64031a0 98 if (_angle >= 72 && _angle < 100 || _angle >= -260 && _angle < -255) {
el17mcd 11:4e2eb64031a0 99 const int turret_spr5[5][7] = {
el17mcd 10:d4fb12e9e7cd 100 { 0,0,1,0,0,0,0 },
el17mcd 11:4e2eb64031a0 101 { 0,0,1,0,0,0,0 },
el17mcd 11:4e2eb64031a0 102 { 0,0,1,0,0,0,0 },
el17mcd 11:4e2eb64031a0 103 { 0,1,1,1,0,0,0 },
el17mcd 10:d4fb12e9e7cd 104 { 1,1,1,1,1,1,0 },
el17mcd 10:d4fb12e9e7cd 105 };
el17mcd 11:4e2eb64031a0 106 lcd.drawSprite(2 + _position_x,40 - _position_y,5,7,(int *)turret_spr5);
el17mcd 11:4e2eb64031a0 107 }
el17mcd 10:d4fb12e9e7cd 108 else if (_angle >= 18 && _angle < 36) {
el17mcd 10:d4fb12e9e7cd 109 const int turret_spr2[3][7] = {
el17mcd 10:d4fb12e9e7cd 110 { 0,0,1,1,1,1,1 },
el17mcd 10:d4fb12e9e7cd 111 { 0,1,1,1,1,0,0 },
el17mcd 10:d4fb12e9e7cd 112 { 1,1,1,1,1,1,0 },
el17mcd 10:d4fb12e9e7cd 113 };
el17mcd 10:d4fb12e9e7cd 114 lcd.drawSprite(2 + _position_x,42 - _position_y,3,7,(int *)turret_spr2);
el17mcd 10:d4fb12e9e7cd 115 }
el17mcd 10:d4fb12e9e7cd 116 else if (_angle >= 36 && _angle < 54) {
el17mcd 10:d4fb12e9e7cd 117 const int turret_spr3[4][7] = {
el17mcd 10:d4fb12e9e7cd 118 { 0,0,0,0,1,0,0 },
el17mcd 10:d4fb12e9e7cd 119 { 0,0,1,1,0,0,0 },
el17mcd 10:d4fb12e9e7cd 120 { 0,1,1,1,0,0,0 },
el17mcd 10:d4fb12e9e7cd 121 { 1,1,1,1,1,1,0 },
el17mcd 10:d4fb12e9e7cd 122 };
el17mcd 10:d4fb12e9e7cd 123 lcd.drawSprite(2 + _position_x,41 - _position_y,4,7,(int *)turret_spr3);
el17mcd 10:d4fb12e9e7cd 124 }
el17mcd 10:d4fb12e9e7cd 125 else if (_angle >= 54 && _angle < 72) {
el17mcd 10:d4fb12e9e7cd 126 const int turret_spr4[4][7] = {
el17mcd 10:d4fb12e9e7cd 127 { 0,0,0,1,0,0,0 },
el17mcd 10:d4fb12e9e7cd 128 { 0,0,1,1,0,0,0 },
el17mcd 10:d4fb12e9e7cd 129 { 0,1,1,1,0,0,0 },
el17mcd 10:d4fb12e9e7cd 130 { 1,1,1,1,1,1,0 },
el17mcd 10:d4fb12e9e7cd 131 };
el17mcd 10:d4fb12e9e7cd 132 lcd.drawSprite(2 + _position_x,41 - _position_y,4,7,(int *)turret_spr4);
el17mcd 10:d4fb12e9e7cd 133 }
el17mcd 10:d4fb12e9e7cd 134 else {
el17mcd 11:4e2eb64031a0 135 const int turret_spr1[3][7] = {
el17mcd 10:d4fb12e9e7cd 136 { 0,0,1,0,0,0,0 },
el17mcd 11:4e2eb64031a0 137 { 0,1,1,1,1,1,1 },
el17mcd 10:d4fb12e9e7cd 138 { 1,1,1,1,1,1,0 },
el17mcd 10:d4fb12e9e7cd 139 };
el17mcd 11:4e2eb64031a0 140 lcd.drawSprite(2 + _position_x,42 - _position_y,3,7,(int *)turret_spr1);
el17mcd 11:4e2eb64031a0 141 }
el17mcd 7:a3ccabdebe2e 142 }