手机游戏人物与地图的碰撞

来源:互联网 发布:计算机专业不会编程 编辑:程序博客网 时间:2024/04/30 04:31

最近在做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;
  }
  
 }

自己按自己想法做的

肯定有不妥之处请指教