永发信息网

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

答案:2  悬赏:40  手机版
解决时间 2021-11-24 04:12
java做坦克大战的碰撞检测问题,求解决方法
最佳答案
首先你需要确定你的地图方块的规格,长和宽。

其次,对你的坦克的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+x3)(1-x)10的展开式中,x5的系数是___
想买一个斐讯K3C路由器,有用过的吗?会不会
酷派7295A怎么才能恢复出厂设置?
星能系统,为什么有金色,有灰色,区别在哪里
表格中一组数每次随机取三个数相加用什么公式
梦幻遗忘剧情点找冯铁匠。
女生喜欢有计划的人吗?
26分40秒等于几秒
#mes系统工程师java 开发#富士康做mes开发,
如果有一天,在你有困难的时候才发现朋友们都
用2和3只用乘除怎么得到45
清涧路曹扬职业技术学校去上海火车动车站怎么
三个月大的猫怕生总叫怎么办?
撞车了走互碰自赔自己不想报保险可以吗
推荐资讯
如何用windowsXP自带的软件或程序远程控制别
38.9除的42列竖式计算
陇西县形象壹加壹美发店地址好找么,我有些事
0.36除以一点一等于多少商用循环表小数表示列
x年6月29日我行收到国外H银行寄来的托收单据
请有高培淇老师所著的《取名专用大字典》的朋
机械手有哪六个自由度?为什么用六个自由度?
三国里除了亮和愉还有谁最有才华?
华硕玩家国度主板为什么那么贵?
2006年网络流行语
国考体验课什么时候有
两天感觉离合踩下去有时有摩擦感,怎么回
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?