我正在尝试让对象在棋盘上移动(坐标网格)。我把这些物体定义为车辆。它们在平面上具有位置(x,y)和方向。被迫只能移动东南西方可能的方向可能是
车辆只能一步一步地进行(x + 1,y),(x,y + 1),其中x,y是整数。 两辆车不能站在同一位置。车辆在可能的情况下保持其方向,即在遇到占用位置时。
所以我必须创建一个虚空移动函数,其中包含附近车辆(东南西北)的位置。这样的功能应该:
我编写了一个完成第1点的代码但是我在第2点遇到了困难。特别是,我无法考虑改变车辆方向的有效方法。到目前为止,这是我的代码:
class Vehicle {
private:
int x, y;
int vx, vy;
public:
int getx() { return x;}
int gety() { return y;}
int getvx() { return vx;}
int getvy() { return vy;}
void sety(int a) { y = a;}
void setx(int a) { x = a;}
void setvx(int a) {
if (a != 0) {
vx = a / abs(a);
}else { vx = a;}
}
void setvy(int a) {
if (a != 0) {
vy = a / abs(a);
}else { vy = a;}
}
void move(Vehicle * v) {
int big = 0;
while(big<4) {
int cont=0;
for(int i=0; i<4; i++) {
if (x+vx != v[i].getx() or y+vy != v[i].gety()) {
cont ++;
}
}
if(cont==4) {
x = x + vx;
y = y + vy;
break;
} else {
big ++;
// CHANGE DIRECTION in PROPER WAY
}
}
}
void print() {
// prints the private members
}
};
我怎样才能改善这段时间?