最近在做J2ME平台的坦克大战游戏
做到地图和坦克的碰撞
我采用的是状态机检测坦克方向,和在当前方向的坦克地图的碰撞
下面是当坦克朝上的源代码
其他三个方向和它类似
private void heroUpCheck() {//像上的碰撞检测
if(ifcolInt == true && ifrowInt == true)//坦克正好在地图的整数行列上,由于地图块是16*16而我定义的行走速度是8所以要判断是否在整列上
{ if(nowMapcol-1 >=0 )
{
if(gameMap.map[nowMapcol - 1][nowMaprow] != 0 && gameMap.map[nowMapcol - 1][nowMaprow] != 3)//判断上面的地图块是否是草地和空地
isMove = false;//不能行走
}
ifcolInt = false;//表示不能整除,则可以move
}
if(ifcolInt == true && ifrowInt == false)
{
if(nowMapcol-1 >=0 && nowMaprow >=0)
{
int u = nowMaprow + 1;
if(gameMap.map[nowMapcol - 1][nowMaprow + 1] != 0 && gameMap.map[nowMapcol - 1][nowMaprow + 1] != 3)//判断上面的地图块是否是草地和空地
isMove = false;//不能行走
if(gameMap.map[nowMapcol - 1][nowMaprow] != 0 && gameMap.map[nowMapcol - 1][nowMaprow] != 3)// private void heroUpCheck() {
if(ifcolInt == true && ifrowInt == true)//坦克正好在地图的整数行列上
{ if(nowMapcol-1 >=0 )
{
if(gameMap.map[nowMapcol - 1][nowMaprow] != 0 && gameMap.map[nowMapcol - 1][nowMaprow] != 3)//判断上面的地图块是否是草地和空地
isMove = false;//不能行走
}
ifcolInt = false;//表示不能整除,则可以move
}
if(ifcolInt == true && ifrowInt == false)
{
if(nowMapcol-1 >=0 && nowMaprow >=0)
{
int u = nowMaprow + 1;
if(gameMap.map[nowMapcol - 1][nowMaprow + 1] != 0 && gameMap.map[nowMapcol - 1][nowMaprow + 1] != 3)// 当坦克不在整数列时测试坦克左上角地图块 isMove = false;//不能行走
if(gameMap.map[nowMapcol - 1][nowMaprow] != 0 && gameMap.map[nowMapcol - 1][nowMaprow] != 3)// 当坦克不在整数列时测试坦克左上角地图块
isMove = false;//不能行走
}
ifcolInt = false;
}
} isMove = false;//不能行走
}
ifcolInt = false;
}
}
自己按自己想法做的
肯定有不妥之处请指教