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

被折叠的 条评论
为什么被折叠?



