我正在制作一个类似于Atari坦克游戏的坦克游戏,但遇到了一些麻烦。我试图让敌方坦克向玩家的坦克移动,但由于玩家不允许对角线移动,因此它无法对角线移动。然而,我实现的方式是,当x和y轴之间的距离相等时,它会对角线移动。有没有办法使它在改变方向后强制朝一个方向移动一段时间?我的做法是将其x和y值与玩家的坦克(传入的坦克)进行比较,四种情况分别为:x分量大于y并且在右侧或左侧,y分量大于x并且在玩家坦克的上方或下方。感谢您的帮助!
public void enemyMove(Tank t) {
if ( Math.abs(getX() - t.getX()) >= Math.abs(getY() - t.getY()) && getX() > t.getX() )
goLeft();
else if ( Math.abs(getX() - t.getX()) > Math.abs(getY() - t.getY()) && getX() < t.getX() )
goRight();
else if ( Math.abs(getX() - t.getX()) <= Math.abs(getY() - t.getY()) && getY() > t.getY() )
goUp();
else if ( Math.abs(getX() - t.getX()) < Math.abs(getY() - t.getY()) && getY() < t.getY() )
goDown();
setX(getX() + dx);
setY(getY() + dy);
}
public void goUp() {
dx = 0;
dy = -1;
}
public void goDown() {
dx = 0;
dy = 1;
}
public void goLeft() {
dx = -1;
dy = 0;
}
public void goRight() {
dx = 1;
dy = 0;
}