Ikenna Adrian Ozoemena 201157039
Dependencies: mbed
Enemy/Enemy.cpp@30:711d722f3cef, 2019-04-19 (annotated)
- 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?
User | Revision | Line number | New 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 | } |