ELEC2645 (2018/19) / Mbed 2 deprecated EL17MCD

Dependencies:   mbed

Committer:
el17mcd
Date:
Fri Apr 12 12:01:47 2019 +0000
Revision:
10:d4fb12e9e7cd
Parent:
8:d4e419dad90f
Child:
11:4e2eb64031a0
!Tank can move in x direction at a specified speed. Tank sprite updated to include turret at varying angles.

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 7:a3ccabdebe2e 7 /*
el17mcd 7:a3ccabdebe2e 8 TankL::TankL()
el17mcd 7:a3ccabdebe2e 9 {
el17mcd 7:a3ccabdebe2e 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 7:a3ccabdebe2e 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 10:d4fb12e9e7cd 56 int slowness = 24 / _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 10:d4fb12e9e7cd 98 if (_angle < 18) {
el17mcd 10:d4fb12e9e7cd 99 const int turret_spr1[3][7] = {
el17mcd 10:d4fb12e9e7cd 100 { 0,0,1,0,0,0,0 },
el17mcd 10:d4fb12e9e7cd 101 { 0,1,1,1,1,1,1 },
el17mcd 10:d4fb12e9e7cd 102 { 1,1,1,1,1,1,0 },
el17mcd 10:d4fb12e9e7cd 103 };
el17mcd 10:d4fb12e9e7cd 104 lcd.drawSprite(2 + _position_x,42 - _position_y,3,7,(int *)turret_spr1);
el17mcd 10:d4fb12e9e7cd 105 }
el17mcd 10:d4fb12e9e7cd 106 else if (_angle >= 18 && _angle < 36) {
el17mcd 10:d4fb12e9e7cd 107 const int turret_spr2[3][7] = {
el17mcd 10:d4fb12e9e7cd 108 { 0,0,1,1,1,1,1 },
el17mcd 10:d4fb12e9e7cd 109 { 0,1,1,1,1,0,0 },
el17mcd 10:d4fb12e9e7cd 110 { 1,1,1,1,1,1,0 },
el17mcd 10:d4fb12e9e7cd 111 };
el17mcd 10:d4fb12e9e7cd 112 lcd.drawSprite(2 + _position_x,42 - _position_y,3,7,(int *)turret_spr2);
el17mcd 10:d4fb12e9e7cd 113 }
el17mcd 10:d4fb12e9e7cd 114 else if (_angle >= 36 && _angle < 54) {
el17mcd 10:d4fb12e9e7cd 115 const int turret_spr3[4][7] = {
el17mcd 10:d4fb12e9e7cd 116 { 0,0,0,0,1,0,0 },
el17mcd 10:d4fb12e9e7cd 117 { 0,0,1,1,0,0,0 },
el17mcd 10:d4fb12e9e7cd 118 { 0,1,1,1,0,0,0 },
el17mcd 10:d4fb12e9e7cd 119 { 1,1,1,1,1,1,0 },
el17mcd 10:d4fb12e9e7cd 120 };
el17mcd 10:d4fb12e9e7cd 121 lcd.drawSprite(2 + _position_x,41 - _position_y,4,7,(int *)turret_spr3);
el17mcd 10:d4fb12e9e7cd 122 }
el17mcd 10:d4fb12e9e7cd 123 else if (_angle >= 54 && _angle < 72) {
el17mcd 10:d4fb12e9e7cd 124 const int turret_spr4[4][7] = {
el17mcd 10:d4fb12e9e7cd 125 { 0,0,0,1,0,0,0 },
el17mcd 10:d4fb12e9e7cd 126 { 0,0,1,1,0,0,0 },
el17mcd 10:d4fb12e9e7cd 127 { 0,1,1,1,0,0,0 },
el17mcd 10:d4fb12e9e7cd 128 { 1,1,1,1,1,1,0 },
el17mcd 10:d4fb12e9e7cd 129 };
el17mcd 10:d4fb12e9e7cd 130 lcd.drawSprite(2 + _position_x,41 - _position_y,4,7,(int *)turret_spr4);
el17mcd 10:d4fb12e9e7cd 131 }
el17mcd 10:d4fb12e9e7cd 132 else {
el17mcd 10:d4fb12e9e7cd 133 const int turret_spr5[5][7] = {
el17mcd 10:d4fb12e9e7cd 134 { 0,0,1,0,0,0,0 },
el17mcd 10:d4fb12e9e7cd 135 { 0,0,1,0,0,0,0 },
el17mcd 10:d4fb12e9e7cd 136 { 0,0,1,0,0,0,0 },
el17mcd 10:d4fb12e9e7cd 137 { 0,1,1,1,0,0,0 },
el17mcd 10:d4fb12e9e7cd 138 { 1,1,1,1,1,1,0 },
el17mcd 10:d4fb12e9e7cd 139 };
el17mcd 10:d4fb12e9e7cd 140 lcd.drawSprite(2 + _position_x,40 - _position_y,5,7,(int *)turret_spr5);
el17mcd 10:d4fb12e9e7cd 141 }
el17mcd 7:a3ccabdebe2e 142 }