作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在制作 tank
像Atari tank game
这样的游戏我遇到了一些麻烦。我正在尝试制作 enemy's tank move towards the player's tank
但它can't move diagonally
因为玩家也不允许这样做。但是,按照我的实现方式,当与 x 轴和 y 轴的距离彼此相等时,它会沿对角线方向移动。有没有一种方法可以让它在改变方向后被迫朝一个方向移动一段时间?这样做的方法是compare its x and y values
与玩家的坦克(正在传递的坦克)和四个案例是关于 x-component is bigger than y
的。是在 right or left
上吗? , 如果 y-component is bigger than x
是above or below
玩家的坦克。感谢您的帮助!
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;
}
最佳答案
您可以使用曼哈顿距离并找到中位数,然后在两个方向上移动水箱。
关于java - 坦克游戏 Action ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29712681/
我的 Android 应用程序的 Application 对象加载了一个 JNI 库,而 Robolectric 似乎不喜欢那样。当我去运行我的测试 Robolectric 时,我得到了这个堆栈跟踪:
我是一名优秀的程序员,十分优秀!