Barış Bilgin Şenol
/
Game_Logic
Saltuk 212
Diff: Player/Player.cpp
- Revision:
- 0:c7dd8e13fa95
diff -r 000000000000 -r c7dd8e13fa95 Player/Player.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Player/Player.cpp Fri May 31 15:13:48 2019 +0000 @@ -0,0 +1,106 @@ +#include "Player.h" + +/** + constructor + bool true means corresponding coordinates will be incremented every tick (false = decrement) +*/ +Player::Player(short pixel, short x, short y, short dir){ + pxl = pixel; + this->x = x; + this->y = y; + this->dir = dir; + collided = false; + life = 3; +} + +void Player::move(short i){ + short a = 3; + if(i == dir){ + if(dir == 1) + y = y - a; + else if(dir == 2) + x = x + a; + else if(dir == 3) + y = y + a; + else if(dir == 4) + x = x - a; + } + else + dir = i; + + if(x < 0) + x = 0; + else if((x + pxl) > 127) + x = 120; + else if(y < 0) + y = 0; + else if((y + pxl) > 63) + y = 56; +} + +bool Player::willBeRemoved(){ + return collided; +} + +Bullet* Player::fire(){ + Bullet* bullet; + if(dir == 1){ + bullet = new Bullet(2, x+3, y-2, dir); + } + else if(dir == 2){ + bullet = new Bullet(2, x+8, y+3, dir); + } + else if(dir == 3){ + bullet = new Bullet(2, x+3, y+8, dir); + } + else if(dir == 4){ + bullet = new Bullet(2, x-2, y+3, dir); + } + return bullet; +} + +void Player::getxy(short& xcor, short& ycor){ + xcor = x; + ycor = y; +} + +bool Player::checkCollisions(Bullet* bulletHead, Tank* tankHead){ + Bullet* bcomp = bulletHead; + short xcomp, ycomp; + + while(bcomp != 0){ + bcomp->getxy(xcomp, ycomp); + + if((x - 1 <= xcomp && xcomp <= x + 7) && (y - 1 <= ycomp && ycomp <= y + 7)){ + collided = true; + bcomp->setCollision(); + } + bcomp = bcomp->getNext(); + } + Tank* tcomp = tankHead; + + while(tcomp != 0){ + tcomp->getxy(xcomp, ycomp); + + if((x - 7 <= xcomp && xcomp <= x + 7) && (y - 7 <= ycomp && ycomp <= y + 7)){ + collided = true; + tcomp->setCollision(); + } + tcomp = tcomp->getNext(); + } + + if(collided){ + life--; + collided = false; + return true; + } + return false; +} + +short Player::getLife(){ + return life; +} + +short Player::getDir(){ + return dir; +} \ No newline at end of file