连连看算法一点通

本文详细探讨了精灵路径规划中的几种关键场景,包括相同横轴或纵轴移动、转角移动以及复杂移动路径的判断方法。通过算法实现,确保精灵在特定环境中能够准确无误地移动至目标位置。

 

1、两个精灵都在同一横轴或是纵轴

2、另外就是有一个转角的,两种情况箭头向左或向右

3、最复杂,其实掌握下面的情况可以包含上面的所有的情况(重点分析)

 3.1)在纵轴方向有一个共同的没有精灵(障碍)的块(黄色),判断公共i_col到精灵箭头段有没有精灵即可
 

       /**
  * 判断当前列m_col没有障碍
  * @param first_row 行坐标小的精灵
  * @param second_row 行坐标大的精灵
  * @param m_col
  * @return
  */
 public boolean isShu(int first_row, int second_row, int m_col)
 {
  int firstid = (first_row < second_row? first_row:second_row);
  int secondid = (first_row > second_row? first_row:second_row);
  for(int i = firstid; i <= secondid; i++)
  {
   if(mapData[i][m_col] != -1)
   {
    return false;
   }
  }
  return true;
  
 }

  3.2)在横轴方向有一个共同的乜有精灵(障碍)的块(黄色),然后判断i_row箭头这段有没有障碍即可

      

 /**
  * 判断当前行m_row没有障碍
  * @param first_col 纵坐标小的精灵
  * @param second_col 纵坐标大的精灵
  * @param m_row 当前这一行
  * @return 没有障碍表示true
  */
 public boolean isHeng(int first_col, int second_col, int m_row)//表示第一个精灵为起点到第二个精灵,所有行中上没有精灵
 {
  int firstid = (first_col < second_col? first_col:second_col);//跟点击的前后没关系
  int secondid = (first_col > second_col? first_col:second_col);
  for(int i = firstid; i < secondid; i++)
  {
   if(mapData[m_row][i] != -1) //表示中间有障碍物
   {
    return false;
   }
  }
  return true;
 }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值