导读:消除算法图文详解三消算法首要实现的就是找到所有三个或三个以上的可消除对象,但直接找到这些对象是不太现实的,所以我们要将需求拆分。可...
- 消除算法图文详解
- 三消算法首要实现的就是找到所有三个或三个以上的可消除对象,但直接找到这些对象是不太现实的,所以我们要将需求拆分。可不可以先获取所有图案相连的对象,进而在获取三消对象,这个算法也是众多三消游戏的一致实现。
获取图案相同的所有相连对象
/// <summary>
/// 填充相同Item列表
/// </summary>
public void FillSameItemsList(Item current)
{
//如果已存在,跳过
if (sameItemsList.Contains (current))
return;
//添加到列表
sameItemsList.Add (current);
//上下左右的Item
Item[] tempItemList = new Item[]{
GetUpItem(current),GetDownItem(current),
GetLeftItem(current),GetRightItem(current)};
for (int i = 0; i < tempItemList.Length; i++) {
//如果Item不合法,跳过
if (tempItemList [i] == null)
continue;
if (current.currentSpr == tempItemList [i].currentSpr) {
FillSameItemsList (tempItemList[i]);
}
}
}
- 项目实践
项目实践
核心UML类图
当然这个项目是最基础版,只有简单的消除操作,如果加上道具特效,算法会更多,以后在慢慢琢磨品鉴。最后奉上源码,这个项目下落及生成新对象的延迟时间还没有细调,调好后玩起来比较流畅。(内附价值50美元的资源包喔