Ikenna Adrian Ozoemena 201157039

Dependencies:   mbed

Committer:
ikenna1
Date:
Fri Apr 19 19:40:01 2019 +0000
Revision:
30:711d722f3cef
Parent:
28:6319e928f0aa
Child:
31:c7bd3ed16840
* still incorporating shooter

Who changed what in which revision?

UserRevisionLine numberNew contents of line
ikenna1 15:009ccc07bb57 1 #include "Enemy.h"
ikenna1 15:009ccc07bb57 2
ikenna1 15:009ccc07bb57 3 Enemy::Enemy()
ikenna1 15:009ccc07bb57 4 {
ikenna1 15:009ccc07bb57 5
ikenna1 15:009ccc07bb57 6 }
ikenna1 15:009ccc07bb57 7
ikenna1 15:009ccc07bb57 8 Enemy::~Enemy()
ikenna1 15:009ccc07bb57 9 {
ikenna1 15:009ccc07bb57 10
ikenna1 15:009ccc07bb57 11 }
ikenna1 15:009ccc07bb57 12 const int seeker[7][9] = {
ikenna1 15:009ccc07bb57 13 {1,1,0,0,0,0,0,1,1},
ikenna1 15:009ccc07bb57 14 {1,0,1,0,0,0,1,0,1},
ikenna1 15:009ccc07bb57 15 {1,0,0,1,1,1,0,0,1},
ikenna1 15:009ccc07bb57 16 {0,1,0,0,0,0,0,1,0},
ikenna1 15:009ccc07bb57 17 {0,0,1,0,0,0,1,0,0},
ikenna1 15:009ccc07bb57 18 {0,0,1,1,0,1,1,0,0},
ikenna1 15:009ccc07bb57 19 {0,0,0,0,1,0,0,0,0},
ikenna1 15:009ccc07bb57 20 };
ikenna1 28:6319e928f0aa 21 const int shooter[10][11] = {
ikenna1 28:6319e928f0aa 22 {0,0,1,0,0,0,0,0,1,0,0},
ikenna1 28:6319e928f0aa 23 {0,1,0,1,0,0,0,1,0,1,0},
ikenna1 28:6319e928f0aa 24 {1,0,0,1,0,1,0,1,0,0,1},
ikenna1 28:6319e928f0aa 25 {1,0,0,1,1,0,1,1,0,0,1},
ikenna1 28:6319e928f0aa 26 {0,1,0,0,0,0,0,0,0,1,0},
ikenna1 28:6319e928f0aa 27 {0,1,0,0,1,1,1,0,0,1,0},
ikenna1 28:6319e928f0aa 28 {0,0,1,0,0,1,0,0,1,0,0},
ikenna1 28:6319e928f0aa 29 {0,0,0,1,0,0,0,1,0,0,0},
ikenna1 28:6319e928f0aa 30 {0,0,0,0,1,0,1,0,0,0,0},
ikenna1 28:6319e928f0aa 31 {0,0,0,0,0,1,0,0,0,0,0},
ikenna1 28:6319e928f0aa 32 };
ikenna1 30:711d722f3cef 33 void Enemy::init(int seeker_xpos,int seeker_ypos,int sh_no)
ikenna1 15:009ccc07bb57 34 {
ikenna1 30:711d722f3cef 35 // initialize seeker
ikenna1 15:009ccc07bb57 36 _seeker_xpos = seeker_xpos;
ikenna1 15:009ccc07bb57 37 _seeker_ypos = seeker_ypos;
ikenna1 15:009ccc07bb57 38
ikenna1 30:711d722f3cef 39 // for now just starting them spaced apart add randomizer later
ikenna1 30:711d722f3cef 40 if(sh_no == 1) {
ikenna1 30:711d722f3cef 41 _shooter_xpos1 = 0;
ikenna1 30:711d722f3cef 42 _shooter_ypos1 = 0;
ikenna1 30:711d722f3cef 43 }
ikenna1 30:711d722f3cef 44 if(sh_no == 2) {
ikenna1 30:711d722f3cef 45 _shooter_xpos1 = 0;
ikenna1 30:711d722f3cef 46 _shooter_ypos1 = 0;
ikenna1 30:711d722f3cef 47 _shooter_xpos2 = 30;
ikenna1 30:711d722f3cef 48 _shooter_ypos2 = 30;
ikenna1 30:711d722f3cef 49 }
ikenna1 30:711d722f3cef 50 if(sh_no == 3) {
ikenna1 30:711d722f3cef 51 _shooter_xpos1 = 0;
ikenna1 30:711d722f3cef 52 _shooter_ypos1 = 0;
ikenna1 30:711d722f3cef 53 _shooter_xpos2 = 30;
ikenna1 30:711d722f3cef 54 _shooter_ypos2 = 30;
ikenna1 30:711d722f3cef 55 _shooter_xpos3 = 60;
ikenna1 30:711d722f3cef 56 _shooter_ypos3 = 60;
ikenna1 30:711d722f3cef 57 }
ikenna1 30:711d722f3cef 58
ikenna1 15:009ccc07bb57 59 }
ikenna1 15:009ccc07bb57 60 // Draw the ship ***Note: figure out how to change ship type e.g from basic to devotion
ikenna1 15:009ccc07bb57 61 void Enemy::draw_seeker(N5110 &lcd)
ikenna1 15:009ccc07bb57 62 {
ikenna1 15:009ccc07bb57 63 lcd.drawSprite(_seeker_xpos,_seeker_ypos,7,9,(int *)seeker);
ikenna1 15:009ccc07bb57 64 }
ikenna1 30:711d722f3cef 65 void Enemy::draw_shooter(N5110 &lcd,int sh_no)
ikenna1 30:711d722f3cef 66 {
ikenna1 30:711d722f3cef 67 if(sh_no == 1) {
ikenna1 30:711d722f3cef 68 lcd.drawSprite(_shooter_xpos1,_shooter_ypos1,10,11,(int *)shooter);
ikenna1 30:711d722f3cef 69 }
ikenna1 30:711d722f3cef 70 if(sh_no == 2) {
ikenna1 30:711d722f3cef 71 lcd.drawSprite(_shooter_xpos1,_shooter_ypos1,10,11,(int *)shooter);
ikenna1 30:711d722f3cef 72 lcd.drawSprite(_shooter_xpos2,_shooter_ypos2,10,11,(int *)shooter);
ikenna1 30:711d722f3cef 73 }
ikenna1 30:711d722f3cef 74 if(sh_no == 3) {
ikenna1 30:711d722f3cef 75 lcd.drawSprite(_shooter_xpos1,_shooter_ypos1,10,11,(int *)shooter);
ikenna1 30:711d722f3cef 76 lcd.drawSprite(_shooter_xpos2,_shooter_ypos2,10,11,(int *)shooter);
ikenna1 30:711d722f3cef 77 lcd.drawSprite(_shooter_xpos3,_shooter_ypos3,10,11,(int *)shooter);
ikenna1 30:711d722f3cef 78 }
ikenna1 30:711d722f3cef 79 printf("sh_no = %d, shooter_xpos1 = %d, shooter_ypos1 = %d/n",sh_no,_shooter_xpos1,_shooter_ypos1);
ikenna1 30:711d722f3cef 80 }
ikenna1 15:009ccc07bb57 81 void Enemy::update_seeker(int ship_xpos, int ship_ypos)
ikenna1 15:009ccc07bb57 82 {
ikenna1 15:009ccc07bb57 83 int rangex = _seeker_xpos - ship_xpos;
ikenna1 15:009ccc07bb57 84 int rangey = _seeker_ypos - ship_ypos;
ikenna1 15:009ccc07bb57 85
ikenna1 15:009ccc07bb57 86 // make seeker move towards ship
ikenna1 15:009ccc07bb57 87 if(rangey < 0) {
ikenna1 15:009ccc07bb57 88 if(rangex < 0) {
ikenna1 15:009ccc07bb57 89 _seeker_xpos = _seeker_xpos + 2;
ikenna1 15:009ccc07bb57 90 } else if(rangex == 0) {
ikenna1 15:009ccc07bb57 91 _seeker_xpos = _seeker_xpos;
ikenna1 15:009ccc07bb57 92 } else {
ikenna1 15:009ccc07bb57 93 _seeker_xpos = _seeker_xpos - 2;
ikenna1 15:009ccc07bb57 94 }
ikenna1 15:009ccc07bb57 95 }
ikenna1 15:009ccc07bb57 96
ikenna1 15:009ccc07bb57 97 // reset seeker to top
ikenna1 15:009ccc07bb57 98 if(_seeker_ypos > 54) {
ikenna1 15:009ccc07bb57 99 _seeker_ypos = 0;
ikenna1 15:009ccc07bb57 100 }
ikenna1 15:009ccc07bb57 101 _seeker_ypos = _seeker_ypos + 2;
ikenna1 20:5b4b3bf5795c 102 // printf("seeker_xpos , seeker_ypos = %d, %d\n", _seeker_xpos, _seeker_ypos);
ikenna1 15:009ccc07bb57 103 }
ikenna1 30:711d722f3cef 104 void Enemy::update_shooter(int ship_xpos, int ship_ypos)
ikenna1 30:711d722f3cef 105 {
ikenna1 30:711d722f3cef 106 int rangex1 = _shooter_xpos1 - ship_xpos;
ikenna1 30:711d722f3cef 107 int rangey1 = _shooter_ypos1 - ship_ypos;
ikenna1 30:711d722f3cef 108 int rangex2 = _shooter_xpos2 - ship_xpos;
ikenna1 30:711d722f3cef 109 int rangey2 = _shooter_ypos2 - ship_ypos;
ikenna1 30:711d722f3cef 110 int rangex3 = _shooter_xpos3 - ship_xpos;
ikenna1 30:711d722f3cef 111 int rangey3 = _shooter_ypos3 - ship_ypos;
ikenna1 30:711d722f3cef 112 int vx1 = 2;
ikenna1 30:711d722f3cef 113 int vx2 = 2;
ikenna1 30:711d722f3cef 114 int vx3 = 2;
ikenna1 30:711d722f3cef 115 int vy1 = 1;
ikenna1 30:711d722f3cef 116 int vy2 = 1;
ikenna1 30:711d722f3cef 117 int vy3 = 1;
ikenna1 30:711d722f3cef 118
ikenna1 30:711d722f3cef 119 // make shooters move away from ship
ikenna1 30:711d722f3cef 120 if(rangey1 < 0) {
ikenna1 30:711d722f3cef 121 _shooter_ypos1 = _shooter_ypos1 - 1;
ikenna1 30:711d722f3cef 122 }
ikenna1 30:711d722f3cef 123 if(_shooter_ypos1 < 1) {
ikenna1 30:711d722f3cef 124 _shooter_ypos1 = 1;
ikenna1 30:711d722f3cef 125 }
ikenna1 30:711d722f3cef 126 if(rangey2 < 0) {
ikenna1 30:711d722f3cef 127 _shooter_ypos2 = _shooter_ypos2 - 1;
ikenna1 30:711d722f3cef 128 }
ikenna1 30:711d722f3cef 129 if(_shooter_ypos2 < 1) {
ikenna1 30:711d722f3cef 130 _shooter_ypos2 = 1;
ikenna1 30:711d722f3cef 131 }
ikenna1 30:711d722f3cef 132 if(rangey3 < 0) {
ikenna1 30:711d722f3cef 133 _shooter_ypos3 = _shooter_ypos3 - 1;
ikenna1 30:711d722f3cef 134 }
ikenna1 30:711d722f3cef 135 if(_shooter_ypos3 < 1) {
ikenna1 30:711d722f3cef 136 _shooter_ypos3 = 1;
ikenna1 30:711d722f3cef 137 }
ikenna1 30:711d722f3cef 138
ikenna1 30:711d722f3cef 139 // make shooters move left and down
ikenna1 30:711d722f3cef 140 _shooter_xpos1 = _shooter_xpos1 + vx1;
ikenna1 30:711d722f3cef 141 _shooter_ypos1 = _shooter_ypos1 + vy1;
ikenna1 30:711d722f3cef 142 _shooter_xpos2 = _shooter_xpos2 + vx2;
ikenna1 30:711d722f3cef 143 _shooter_ypos2 = _shooter_ypos2 + vy2;
ikenna1 30:711d722f3cef 144 _shooter_xpos3 = _shooter_xpos3 + vx3;
ikenna1 30:711d722f3cef 145 _shooter_ypos3 = _shooter_ypos3 + vy3;
ikenna1 30:711d722f3cef 146
ikenna1 30:711d722f3cef 147
ikenna1 30:711d722f3cef 148 // printf("seeker_xpos , seeker_ypos = %d, %d\n", _seeker_xpos, _seeker_ypos);
ikenna1 30:711d722f3cef 149 }
ikenna1 18:2cc6898de6b2 150 void Enemy::reset_seeker()
ikenna1 18:2cc6898de6b2 151 {
ikenna1 18:2cc6898de6b2 152 _seeker_xpos = 0;
ikenna1 18:2cc6898de6b2 153 _seeker_ypos = 0;
ikenna1 18:2cc6898de6b2 154 }
ikenna1 15:009ccc07bb57 155 Vector2D Enemy::get_seekerpos()
ikenna1 15:009ccc07bb57 156 {
ikenna1 15:009ccc07bb57 157 Vector2D seeker_pos = {_seeker_xpos,_seeker_ypos};
ikenna1 15:009ccc07bb57 158 return seeker_pos;
ikenna1 15:009ccc07bb57 159 }