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;
}追问谢谢!
其次,对你的坦克的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
代码就不写了,简单说下思路吧
其实思路很简单
按方向键上,坦克向上移动,判断是否遇到障碍,有,则退回来。
其他方向也是如此。追问这是网上复制的!!
其实思路很简单
按方向键上,坦克向上移动,判断是否遇到障碍,有,则退回来。
其他方向也是如此。追问这是网上复制的!!
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯