189 lines
3.3 KiB
C++
189 lines
3.3 KiB
C++
#include "point.h"
|
|
#include "entities.h"
|
|
|
|
int Player::checkDirection(int dir) const {
|
|
int x=origin_.getX();
|
|
int y=origin_.getY();
|
|
switch(dir) {
|
|
case 0:
|
|
if(y==(size_/2)) {
|
|
return 12;
|
|
}
|
|
else if(y==(size_/2)+1) {
|
|
return 8;
|
|
}
|
|
else return 0;
|
|
break;
|
|
case 1:
|
|
if((y==(size_/2))&&(x!=(map_.getX()-(size_/2)))) {
|
|
return 9;
|
|
}
|
|
else if((y==(size_/2))&&(x==(map_.getX()-(size_/2)))) {
|
|
return 13;
|
|
}
|
|
else if((y!=(size_/2))&&(x==(map_.getX()-(size_/2)))) {
|
|
return 8;
|
|
}
|
|
else return 1;
|
|
break;
|
|
case 2:
|
|
if(x==(map_.getX()-(size_/2))) {
|
|
return 14;
|
|
}
|
|
else if(x==(map_.getX()-((size_/2)+1))) {
|
|
return 9;
|
|
}
|
|
else {
|
|
return 2;
|
|
}
|
|
break;
|
|
case 3:
|
|
if((y==(map_.getY()-(size_/2)))&&(x!=(map_.getX()-(size_/2)))) {
|
|
return 9;
|
|
}
|
|
else if((y==(map_.getY()-(size_/2)))&&(x==(map_.getX()-(size_/2)))) {
|
|
return 15;
|
|
}
|
|
else if((y!=(map_.getY()-(size_/2)))&&(x==(map_.getX()-(size_/2)))) {
|
|
return 10;
|
|
}
|
|
else return 3;
|
|
break;
|
|
case 4:
|
|
if(y==(map_.getY()-(size_/2))) {
|
|
return 16;
|
|
}
|
|
else if(y==(map_.getX()-((size_/2)+1))) {
|
|
return 10;
|
|
}
|
|
else return 4;
|
|
break;
|
|
case 5:
|
|
if((y==(map_.getY()-(size_/2)))&&(x!=(size_/2))) {
|
|
return 11;
|
|
}
|
|
else if((y==(map_.getY()-(size_/2)))&&(x==(size_/2))) {
|
|
return 17;
|
|
}
|
|
else if((y!=(map_.getY()-(size_/2)))&&(x==(size_/2))) {
|
|
return 10;
|
|
}
|
|
else return 5;
|
|
break;
|
|
case 6:
|
|
if(x==(size_/2)) {
|
|
return 18;
|
|
}
|
|
else if(x==((size_/2)+1)) {
|
|
return 11;
|
|
}
|
|
else {
|
|
return 6;
|
|
}
|
|
break;
|
|
case 7:
|
|
if((y==(size_/2))&&(x!=(size_/2))) {
|
|
return 11;
|
|
}
|
|
else if((y==(size_/2))&&(x==(size_/2))) {
|
|
return 19;
|
|
}
|
|
else if((y!=(size_/2))&&(x==(size_/2))) {
|
|
return 8;
|
|
}
|
|
else return 7;
|
|
break;
|
|
}
|
|
}
|
|
|
|
Point Player::getPosition() const {
|
|
return origin_;
|
|
}
|
|
|
|
void Player::movePlayer(int dir) {
|
|
direction_=checkDirection(dir);
|
|
switch(direction_) {
|
|
case 0:
|
|
origin_.setY(origin_.getY()-2);
|
|
break;
|
|
case 1:
|
|
origin_.setX(origin_.getX()+1);
|
|
origin_.setY(origin_.getY()-1);
|
|
break;
|
|
case 2:
|
|
origin_.setX(origin_.getX()+2);
|
|
break;
|
|
case 3:
|
|
origin_.setX(origin_.getX()+1);
|
|
origin_.setY(origin_.getY()+1);
|
|
break;
|
|
case 4:
|
|
origin_.setY(origin_.getY()+2);
|
|
break;
|
|
case 5:
|
|
origin_.setX(origin_.getX()-1);
|
|
origin_.setY(origin_.getY()+1);
|
|
break;
|
|
case 6:
|
|
origin_.setX(origin_.getX()-2);
|
|
break;
|
|
case 7:
|
|
origin_.setX(origin_.getX()-1);
|
|
origin_.setY(origin_.getY()-1);
|
|
break;
|
|
case 8:
|
|
direction_=0;
|
|
origin_.setY(origin_.getY()-1);
|
|
break;
|
|
case 9:
|
|
direction_=2;
|
|
origin_.setX(origin_.getX()+1);
|
|
break;
|
|
case 10:
|
|
direction_=4;
|
|
origin_.setY(origin_.getY()+1);
|
|
break;
|
|
case 11:
|
|
direction_=6;
|
|
origin_.setX(origin_.getX()-1);
|
|
break;
|
|
case 12:
|
|
direction_=0;
|
|
break;
|
|
case 13:
|
|
direction_=1;
|
|
break;
|
|
case 14:
|
|
direction_=2;
|
|
break;
|
|
case 15:
|
|
direction_=3;
|
|
break;
|
|
case 16:
|
|
direction_=4;
|
|
break;
|
|
case 17:
|
|
direction_=5;
|
|
break;
|
|
case 18:
|
|
direction_=6;
|
|
break;
|
|
case 19:
|
|
direction_=7;
|
|
break;
|
|
}
|
|
}
|
|
|
|
int Player::getDirection() const {
|
|
return direction_;
|
|
}
|
|
|
|
void Player::init(Point origin, int size, int dir, Point map) {
|
|
origin_.setX(origin.getX());
|
|
origin_.setY(origin.getY());
|
|
size_=size;
|
|
direction_=dir;
|
|
map_.setX(map.getX());
|
|
map_.setY(map.getY());
|
|
}
|