永发信息网

java做坦克大战的碰撞检测问题,求解决方法

答案:2  悬赏:40  手机版
解决时间 2021-11-24 04:12
  • 提问者网友:杀生予夺
  • 2021-11-23 14:58
java做坦克大战的碰撞检测问题,求解决方法
最佳答案
  • 五星知识达人网友:慢性怪人
  • 2021-11-23 15:04
首先你需要确定你的地图方块的规格,长和宽。

其次,对你的坦克的X坐标和Y坐标进行求余。

假设:block_x,block'_y分别是你的绘画长宽。
当坦克运动时:x%block_x==0时即坦克的x坐标运动到了方块的边界,从地图数据map数组中获取map[x/block_x-1][y/block_y]或+1的值,如果是不可通行方块,则关闭坦克对于该方向的移动。
y坐标同理追问不好意思!是点错了!采纳了上面那个的!!还是感谢你的帮忙!!追答那假设你的坦克类是这样的

class Tank{
    public static final int UP=1;
    public static final int DOWN=3;
    public static final int LEFT=0;
    public static final int RIGHT=2;
    boolean stop[]=new boolean[4];//这四个控制允许坦克移动的四个方向
    int x=0,y=0;
}接下来是移动

public boolean move(int dire,int [][]map){//参数是移动的方向与地图数据
    if(stop[dire])//如果这个方向是禁止移动的直接返回
        return fasle;
    int off_x=dire%2!=0?0:dire-1;
    int off_y=dire%2==0?0:dire-2;
    this.x+=off_x;
    this.y+=off_y;
    if(this.x%60==0||this.y%60==0){//移动之后的坦克位与方块的边界
        int x=this.x/60;
        int y=this.y/60;
        if(x-1>=0&&map[x-1][y]!=1){//对坦克左边的方块进行判断
            stop[LEFT]=true//设置左方向可移动
        }else{
            stop[LEFT]=false;//设置左方向不可移动
        }
        .......依次类推
    }
    return true;
}追问谢谢!
全部回答
  • 1楼网友:轮獄道
  • 2021-11-23 15:57
代码就不写了,简单说下思路吧
其实思路很简单
按方向键上,坦克向上移动,判断是否遇到障碍,有,则退回来。
其他方向也是如此。追问这是网上复制的!!
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯