Lab 6 for ECE 2036,a lame version of Galiga that needs to have the bullet fixed, but focuses on the concept of polymorphism

Dependencies:   mbed 4DGL-uLCD-SE PinDetect

Committer:
nasiromar
Date:
Wed Apr 27 05:31:20 2022 +0000
Revision:
0:660af2d0e42d
Lame Game Lab 6

Who changed what in which revision?

UserRevisionLine numberNew contents of line
nasiromar 0:660af2d0e42d 1 #include "graphics.h"
nasiromar 0:660af2d0e42d 2 #include "global.h"
nasiromar 0:660af2d0e42d 3
nasiromar 0:660af2d0e42d 4 #define STOP_D 0
nasiromar 0:660af2d0e42d 5 #define GO_RIGHT 1
nasiromar 0:660af2d0e42d 6 #define GO_LEFT 2
nasiromar 0:660af2d0e42d 7
nasiromar 0:660af2d0e42d 8 #define GEAR_1 .3
nasiromar 0:660af2d0e42d 9
nasiromar 0:660af2d0e42d 10 //The characters for LAME
nasiromar 0:660af2d0e42d 11 #include "Sprites/bullet.cpp"
nasiromar 0:660af2d0e42d 12 #include "Sprites/BobUp.cpp"
nasiromar 0:660af2d0e42d 13 #include "Sprites/ship.cpp"
nasiromar 0:660af2d0e42d 14 #include "Sprites/BobDown.cpp"
nasiromar 0:660af2d0e42d 15 #include "Sprites/Alice.cpp"
nasiromar 0:660af2d0e42d 16 #include "Sprites/rocket.cpp"
nasiromar 0:660af2d0e42d 17
nasiromar 0:660af2d0e42d 18
nasiromar 0:660af2d0e42d 19
nasiromar 0:660af2d0e42d 20
nasiromar 0:660af2d0e42d 21 //constructors
nasiromar 0:660af2d0e42d 22 AliceAlien::AliceAlien()
nasiromar 0:660af2d0e42d 23 {
nasiromar 0:660af2d0e42d 24 setInput(NO_HIT);
nasiromar 0:660af2d0e42d 25 setState(NO_DAMAGE);
nasiromar 0:660af2d0e42d 26
nasiromar 0:660af2d0e42d 27 }
nasiromar 0:660af2d0e42d 28
nasiromar 0:660af2d0e42d 29 BobAlien::BobAlien()
nasiromar 0:660af2d0e42d 30 {
nasiromar 0:660af2d0e42d 31 setInput(NO_HIT);
nasiromar 0:660af2d0e42d 32 setState(NO_DAMAGE);
nasiromar 0:660af2d0e42d 33 setDirPos(true);
nasiromar 0:660af2d0e42d 34
nasiromar 0:660af2d0e42d 35
nasiromar 0:660af2d0e42d 36 }
nasiromar 0:660af2d0e42d 37
nasiromar 0:660af2d0e42d 38 Ship::Ship()
nasiromar 0:660af2d0e42d 39 {
nasiromar 0:660af2d0e42d 40 setInput(NO_HIT);
nasiromar 0:660af2d0e42d 41 setState(NO_DAMAGE);
nasiromar 0:660af2d0e42d 42 setGear(STOP);
nasiromar 0:660af2d0e42d 43
nasiromar 0:660af2d0e42d 44 }
nasiromar 0:660af2d0e42d 45
nasiromar 0:660af2d0e42d 46 Rocket::Rocket()
nasiromar 0:660af2d0e42d 47 {
nasiromar 0:660af2d0e42d 48 setInput(NO_HIT);
nasiromar 0:660af2d0e42d 49 //loadedRocket = false;
nasiromar 0:660af2d0e42d 50 }
nasiromar 0:660af2d0e42d 51
nasiromar 0:660af2d0e42d 52 Bullet::Bullet()
nasiromar 0:660af2d0e42d 53 {
nasiromar 0:660af2d0e42d 54 setInput(NO_HIT);
nasiromar 0:660af2d0e42d 55 //loadedBullet = false;
nasiromar 0:660af2d0e42d 56 }
nasiromar 0:660af2d0e42d 57
nasiromar 0:660af2d0e42d 58 //Draw Functions
nasiromar 0:660af2d0e42d 59 void BobAlien::draw(int u,int v)
nasiromar 0:660af2d0e42d 60 {
nasiromar 0:660af2d0e42d 61 //Use get state here to make bob draw the differnt types
nasiromar 0:660af2d0e42d 62 uLCD.BLIT(u,v,11,11,BobUp);
nasiromar 0:660af2d0e42d 63 }
nasiromar 0:660af2d0e42d 64
nasiromar 0:660af2d0e42d 65 void AliceAlien::draw(int u,int v)
nasiromar 0:660af2d0e42d 66 {
nasiromar 0:660af2d0e42d 67 //Use get state here to make bob draw the differnt types
nasiromar 0:660af2d0e42d 68 uLCD.BLIT(u,v,11,11,Alice);
nasiromar 0:660af2d0e42d 69 }
nasiromar 0:660af2d0e42d 70
nasiromar 0:660af2d0e42d 71 void Ship::draw(int u,int v)
nasiromar 0:660af2d0e42d 72 {
nasiromar 0:660af2d0e42d 73 //Use get state here to make bob draw the differnt types
nasiromar 0:660af2d0e42d 74 uLCD.BLIT(u,v,11,11,ship);
nasiromar 0:660af2d0e42d 75 }
nasiromar 0:660af2d0e42d 76
nasiromar 0:660af2d0e42d 77 void Bullet::draw(int u,int v)
nasiromar 0:660af2d0e42d 78 {
nasiromar 0:660af2d0e42d 79 //Use get state here to make bob draw the differnt types
nasiromar 0:660af2d0e42d 80 uLCD.BLIT(u,v,11,11,bullet);
nasiromar 0:660af2d0e42d 81 }
nasiromar 0:660af2d0e42d 82
nasiromar 0:660af2d0e42d 83 void Rocket::draw(int u,int v)
nasiromar 0:660af2d0e42d 84 {
nasiromar 0:660af2d0e42d 85 //Use get state here to make bob draw the differnt types
nasiromar 0:660af2d0e42d 86 uLCD.BLIT(u,v,11,11,rocket);
nasiromar 0:660af2d0e42d 87 }
nasiromar 0:660af2d0e42d 88
nasiromar 0:660af2d0e42d 89 //Screen Object Base functions
nasiromar 0:660af2d0e42d 90
nasiromar 0:660af2d0e42d 91 void ScreenObjects::setState(StateType currState)
nasiromar 0:660af2d0e42d 92 {
nasiromar 0:660af2d0e42d 93 state = currState;
nasiromar 0:660af2d0e42d 94 }
nasiromar 0:660af2d0e42d 95
nasiromar 0:660af2d0e42d 96 void ScreenObjects::setInput(InputType Input)
nasiromar 0:660af2d0e42d 97 {
nasiromar 0:660af2d0e42d 98 input = Input;
nasiromar 0:660af2d0e42d 99 }
nasiromar 0:660af2d0e42d 100
nasiromar 0:660af2d0e42d 101 int ScreenObjects::getHealth()
nasiromar 0:660af2d0e42d 102 {
nasiromar 0:660af2d0e42d 103 return health;
nasiromar 0:660af2d0e42d 104 }
nasiromar 0:660af2d0e42d 105
nasiromar 0:660af2d0e42d 106 void ScreenObjects::setHealth(int HP)
nasiromar 0:660af2d0e42d 107 {
nasiromar 0:660af2d0e42d 108 health = HP;
nasiromar 0:660af2d0e42d 109 }
nasiromar 0:660af2d0e42d 110
nasiromar 0:660af2d0e42d 111 int * ScreenObjects::getPosition()
nasiromar 0:660af2d0e42d 112 {
nasiromar 0:660af2d0e42d 113 int * positionPointer = NULL;
nasiromar 0:660af2d0e42d 114 positionPointer = Position;
nasiromar 0:660af2d0e42d 115 return positionPointer;
nasiromar 0:660af2d0e42d 116 }
nasiromar 0:660af2d0e42d 117
nasiromar 0:660af2d0e42d 118 int * ScreenObjects::getPrevPosition()
nasiromar 0:660af2d0e42d 119 {
nasiromar 0:660af2d0e42d 120 return previousPosition;
nasiromar 0:660af2d0e42d 121 }
nasiromar 0:660af2d0e42d 122
nasiromar 0:660af2d0e42d 123 void ScreenObjects::setPosition(int posx,int posy)
nasiromar 0:660af2d0e42d 124 {
nasiromar 0:660af2d0e42d 125 Position[0] = posx;
nasiromar 0:660af2d0e42d 126 Position[1] = posy;
nasiromar 0:660af2d0e42d 127 }
nasiromar 0:660af2d0e42d 128
nasiromar 0:660af2d0e42d 129 void ScreenObjects::setPrevPosition(int * newPos)
nasiromar 0:660af2d0e42d 130 {
nasiromar 0:660af2d0e42d 131 previousPosition = newPos;
nasiromar 0:660af2d0e42d 132 }
nasiromar 0:660af2d0e42d 133
nasiromar 0:660af2d0e42d 134 void ScreenObjects::erase(int u, int v)
nasiromar 0:660af2d0e42d 135 {
nasiromar 0:660af2d0e42d 136 uLCD.filled_rectangle(u, v, u+10, v+10, BLACK);
nasiromar 0:660af2d0e42d 137 }
nasiromar 0:660af2d0e42d 138
nasiromar 0:660af2d0e42d 139
nasiromar 0:660af2d0e42d 140 int ScreenObjects::getDirection()
nasiromar 0:660af2d0e42d 141 {
nasiromar 0:660af2d0e42d 142
nasiromar 0:660af2d0e42d 143 return direction;
nasiromar 0:660af2d0e42d 144
nasiromar 0:660af2d0e42d 145 }
nasiromar 0:660af2d0e42d 146
nasiromar 0:660af2d0e42d 147 void ScreenObjects::setDirection(int num)
nasiromar 0:660af2d0e42d 148 {
nasiromar 0:660af2d0e42d 149
nasiromar 0:660af2d0e42d 150 direction = num;
nasiromar 0:660af2d0e42d 151
nasiromar 0:660af2d0e42d 152 }
nasiromar 0:660af2d0e42d 153
nasiromar 0:660af2d0e42d 154 bool ScreenObjects::getDirPos()
nasiromar 0:660af2d0e42d 155 {
nasiromar 0:660af2d0e42d 156
nasiromar 0:660af2d0e42d 157 return dirPos;
nasiromar 0:660af2d0e42d 158
nasiromar 0:660af2d0e42d 159 }
nasiromar 0:660af2d0e42d 160
nasiromar 0:660af2d0e42d 161 void ScreenObjects::setDirPos(bool val)
nasiromar 0:660af2d0e42d 162 {
nasiromar 0:660af2d0e42d 163
nasiromar 0:660af2d0e42d 164 dirPos = val;
nasiromar 0:660af2d0e42d 165
nasiromar 0:660af2d0e42d 166 }
nasiromar 0:660af2d0e42d 167
nasiromar 0:660af2d0e42d 168 //Bullet Class Functions
nasiromar 0:660af2d0e42d 169
nasiromar 0:660af2d0e42d 170
nasiromar 0:660af2d0e42d 171 bool Bullet::getLoaded()
nasiromar 0:660af2d0e42d 172 {
nasiromar 0:660af2d0e42d 173 load = loadedBullet;
nasiromar 0:660af2d0e42d 174 return load;
nasiromar 0:660af2d0e42d 175 }
nasiromar 0:660af2d0e42d 176
nasiromar 0:660af2d0e42d 177 void Bullet::update()
nasiromar 0:660af2d0e42d 178 {
nasiromar 0:660af2d0e42d 179 setPrevPosition(getPosition());
nasiromar 0:660af2d0e42d 180
nasiromar 0:660af2d0e42d 181 if(getLoaded()) {
nasiromar 0:660af2d0e42d 182 setPosition(getShipPosition()[0],getShipPosition()[1]-1);
nasiromar 0:660af2d0e42d 183 }
nasiromar 0:660af2d0e42d 184
nasiromar 0:660af2d0e42d 185 }
nasiromar 0:660af2d0e42d 186
nasiromar 0:660af2d0e42d 187
nasiromar 0:660af2d0e42d 188
nasiromar 0:660af2d0e42d 189 //Rocket Class Functions
nasiromar 0:660af2d0e42d 190
nasiromar 0:660af2d0e42d 191 //
nasiromar 0:660af2d0e42d 192
nasiromar 0:660af2d0e42d 193 //Ship Class Functions
nasiromar 0:660af2d0e42d 194
nasiromar 0:660af2d0e42d 195 void Ship::setGear(GearShift Gears)
nasiromar 0:660af2d0e42d 196 {
nasiromar 0:660af2d0e42d 197 gear = Gears;
nasiromar 0:660af2d0e42d 198 }
nasiromar 0:660af2d0e42d 199
nasiromar 0:660af2d0e42d 200 GearShift Ship::getGear()
nasiromar 0:660af2d0e42d 201 {
nasiromar 0:660af2d0e42d 202 return gear;
nasiromar 0:660af2d0e42d 203 }
nasiromar 0:660af2d0e42d 204
nasiromar 0:660af2d0e42d 205
nasiromar 0:660af2d0e42d 206 int Ship::move(double tiltDirection)
nasiromar 0:660af2d0e42d 207 {
nasiromar 0:660af2d0e42d 208 if (tiltDirection>GEAR_1) {
nasiromar 0:660af2d0e42d 209 setGear(GEAR1);
nasiromar 0:660af2d0e42d 210 return GO_RIGHT;
nasiromar 0:660af2d0e42d 211 }
nasiromar 0:660af2d0e42d 212 if (tiltDirection<-1*GEAR_1) {
nasiromar 0:660af2d0e42d 213 setGear(GEAR1);
nasiromar 0:660af2d0e42d 214 return GO_LEFT;
nasiromar 0:660af2d0e42d 215 }
nasiromar 0:660af2d0e42d 216
nasiromar 0:660af2d0e42d 217 else {
nasiromar 0:660af2d0e42d 218 setGear(STOP);
nasiromar 0:660af2d0e42d 219 return STOP_D;
nasiromar 0:660af2d0e42d 220 }
nasiromar 0:660af2d0e42d 221 }
nasiromar 0:660af2d0e42d 222
nasiromar 0:660af2d0e42d 223
nasiromar 0:660af2d0e42d 224 int * Ship::getShipPosition()
nasiromar 0:660af2d0e42d 225 {
nasiromar 0:660af2d0e42d 226 return shipPos;
nasiromar 0:660af2d0e42d 227 }
nasiromar 0:660af2d0e42d 228
nasiromar 0:660af2d0e42d 229 void Ship::setShipPos(int * val)
nasiromar 0:660af2d0e42d 230 {
nasiromar 0:660af2d0e42d 231 shipPos = val;
nasiromar 0:660af2d0e42d 232 }
nasiromar 0:660af2d0e42d 233
nasiromar 0:660af2d0e42d 234
nasiromar 0:660af2d0e42d 235 void Ship::update()
nasiromar 0:660af2d0e42d 236 {
nasiromar 0:660af2d0e42d 237 setPrevPosition(getPosition());
nasiromar 0:660af2d0e42d 238
nasiromar 0:660af2d0e42d 239 //Stop
nasiromar 0:660af2d0e42d 240 if(getGear() == STOP || getPosition()[0] <=11 || getPosition()[0] > 117) {
nasiromar 0:660af2d0e42d 241 setPosition((getPosition()[0]),getPosition()[1]);
nasiromar 0:660af2d0e42d 242 setShipPos(getPosition());
nasiromar 0:660af2d0e42d 243 }
nasiromar 0:660af2d0e42d 244
nasiromar 0:660af2d0e42d 245 //Gear1
nasiromar 0:660af2d0e42d 246 if(getGear() == GEAR1 && getPosition()[0] <= 117) {
nasiromar 0:660af2d0e42d 247 erase(getPosition()[0],getPosition()[1]);//move
nasiromar 0:660af2d0e42d 248 if(getDirection() == GO_LEFT) {
nasiromar 0:660af2d0e42d 249 setPosition((getPosition()[0]-2),getPosition()[1]);
nasiromar 0:660af2d0e42d 250 setShipPos(getPosition());
nasiromar 0:660af2d0e42d 251 }
nasiromar 0:660af2d0e42d 252 if(getDirection() == GO_RIGHT) {
nasiromar 0:660af2d0e42d 253 setPosition((getPosition()[0]+2),getPosition()[1]);
nasiromar 0:660af2d0e42d 254 setShipPos(getPosition());
nasiromar 0:660af2d0e42d 255 }
nasiromar 0:660af2d0e42d 256 }
nasiromar 0:660af2d0e42d 257
nasiromar 0:660af2d0e42d 258 }
nasiromar 0:660af2d0e42d 259
nasiromar 0:660af2d0e42d 260 //Bob ALien Class Functions
nasiromar 0:660af2d0e42d 261 void BobAlien::update()
nasiromar 0:660af2d0e42d 262 {
nasiromar 0:660af2d0e42d 263 setPrevPosition(getPosition());
nasiromar 0:660af2d0e42d 264 erase(getPosition()[0],getPosition()[1]);//move
nasiromar 0:660af2d0e42d 265
nasiromar 0:660af2d0e42d 266 if(getPosition()[0] < 117 && getDirPos() )
nasiromar 0:660af2d0e42d 267 {
nasiromar 0:660af2d0e42d 268 setDirection(GO_RIGHT);
nasiromar 0:660af2d0e42d 269 }
nasiromar 0:660af2d0e42d 270
nasiromar 0:660af2d0e42d 271 if(getPosition()[0] > 117)
nasiromar 0:660af2d0e42d 272 {
nasiromar 0:660af2d0e42d 273 setDirPos(false);
nasiromar 0:660af2d0e42d 274 setDirection(STOP_D);
nasiromar 0:660af2d0e42d 275 }
nasiromar 0:660af2d0e42d 276
nasiromar 0:660af2d0e42d 277 if(getDirection() == STOP_D)
nasiromar 0:660af2d0e42d 278 {
nasiromar 0:660af2d0e42d 279 setPosition((getPosition()[0]),getPosition()[1]+5);
nasiromar 0:660af2d0e42d 280 setDirection(GO_LEFT);
nasiromar 0:660af2d0e42d 281 }
nasiromar 0:660af2d0e42d 282
nasiromar 0:660af2d0e42d 283 if(getPosition()[0] <= 10 && getDirPos() == false)
nasiromar 0:660af2d0e42d 284 {
nasiromar 0:660af2d0e42d 285 setDirPos(true);
nasiromar 0:660af2d0e42d 286 }
nasiromar 0:660af2d0e42d 287
nasiromar 0:660af2d0e42d 288
nasiromar 0:660af2d0e42d 289
nasiromar 0:660af2d0e42d 290 if(getDirection() == GO_LEFT && getDirPos() == false) {
nasiromar 0:660af2d0e42d 291 setPosition((getPosition()[0]-1),getPosition()[1]);
nasiromar 0:660af2d0e42d 292 }
nasiromar 0:660af2d0e42d 293 if(getDirection() == GO_RIGHT) {
nasiromar 0:660af2d0e42d 294 setPosition((getPosition()[0]+1),getPosition()[1]);
nasiromar 0:660af2d0e42d 295 }
nasiromar 0:660af2d0e42d 296
nasiromar 0:660af2d0e42d 297 }
nasiromar 0:660af2d0e42d 298
nasiromar 0:660af2d0e42d 299
nasiromar 0:660af2d0e42d 300 //Alice Alien Class Functions
nasiromar 0:660af2d0e42d 301 void AliceAlien::update()
nasiromar 0:660af2d0e42d 302 {
nasiromar 0:660af2d0e42d 303 setPrevPosition(getPosition());
nasiromar 0:660af2d0e42d 304 erase(getPosition()[0],getPosition()[1]);//move
nasiromar 0:660af2d0e42d 305
nasiromar 0:660af2d0e42d 306 if(getPosition()[0] < 117 && getDirPos() )
nasiromar 0:660af2d0e42d 307 {
nasiromar 0:660af2d0e42d 308 setDirection(GO_RIGHT);
nasiromar 0:660af2d0e42d 309 }
nasiromar 0:660af2d0e42d 310
nasiromar 0:660af2d0e42d 311 if(getPosition()[0] > 117)
nasiromar 0:660af2d0e42d 312 {
nasiromar 0:660af2d0e42d 313 setDirPos(false);
nasiromar 0:660af2d0e42d 314 setDirection(STOP_D);
nasiromar 0:660af2d0e42d 315 }
nasiromar 0:660af2d0e42d 316
nasiromar 0:660af2d0e42d 317 if(getDirection() == STOP_D)
nasiromar 0:660af2d0e42d 318 {
nasiromar 0:660af2d0e42d 319 setPosition((getPosition()[0]),getPosition()[1]+5);
nasiromar 0:660af2d0e42d 320 setDirection(GO_LEFT);
nasiromar 0:660af2d0e42d 321 }
nasiromar 0:660af2d0e42d 322
nasiromar 0:660af2d0e42d 323 if(getPosition()[0] <= 10 && getDirPos() == false)
nasiromar 0:660af2d0e42d 324 {
nasiromar 0:660af2d0e42d 325 setDirPos(true);
nasiromar 0:660af2d0e42d 326 }
nasiromar 0:660af2d0e42d 327
nasiromar 0:660af2d0e42d 328
nasiromar 0:660af2d0e42d 329
nasiromar 0:660af2d0e42d 330 if(getDirection() == GO_LEFT && getDirPos() == false) {
nasiromar 0:660af2d0e42d 331 setPosition((getPosition()[0]-1),getPosition()[1]);
nasiromar 0:660af2d0e42d 332 }
nasiromar 0:660af2d0e42d 333 if(getDirection() == GO_RIGHT) {
nasiromar 0:660af2d0e42d 334 setPosition((getPosition()[0]+1),getPosition()[1]);
nasiromar 0:660af2d0e42d 335 }
nasiromar 0:660af2d0e42d 336 }
nasiromar 0:660af2d0e42d 337
nasiromar 0:660af2d0e42d 338 //Rocket Class Functions
nasiromar 0:660af2d0e42d 339 void Rocket::update()
nasiromar 0:660af2d0e42d 340 {
nasiromar 0:660af2d0e42d 341 setPrevPosition(getPosition());
nasiromar 0:660af2d0e42d 342
nasiromar 0:660af2d0e42d 343 }