演示效果:
開發工具:
主要的邏輯:
b、用乙個二維陣列(各個方向均比陣列大1)儲存的狀態值,搜尋路徑時對映到這個陣列搜尋;
c、搜尋順序:
/**
* 直連
*/matchblockline: function (x1, y1, x2, y2)
if (x1 == x2)
var ymin = math.min(y1, y2) + 1;
var ymax = math.max(y1, y2);
for (ymin; ymin < ymax; ymin++)
}} else if (y1 == y2)
var xmin = math.min(x1, x2) + 1;
var xmax = math.max(x1, x2);
for (xmin; xmin < xmax; xmin++) }}
return true;
},
/**
* 乙個轉角
* 搜尋到路徑時,返回轉角座標 x3, y3
*/matchblockcorner: function (x1, y1, x2, y2, isaxis_x)
// 轉角點1 (x1, y2),y方向 if (this._canvasgrids[x1 + 1][y2 + 1] <= this._type_init && isaxis_x != false)
}// 轉角點2 (x2, y1),x方向 if (this._canvasgrids[x2 + 1][y1 + 1] <= this._type_init && isaxis_x != true)
}return null;
},/**
* 轉角邏輯
*/matchblockcorner_point: function (x1, y1, x2, y2, x3, y3)
}return null;
},/** * 兩個轉角
* 搜尋到路徑時,返回兩個轉角點座標 x3, y3, x4, y4
*/matchblockunfold: function (x1, y1, x2, y2)
}// 下
x3 = x1;
y3 = y1 - i;
if (candown && y3 >= -1)
}// 左
x3 = x1 - i;
y3 = y1;
if (canleft && x3 >= -1)
}// 右
x3 = x1 + i;
y3 = y1;
if (canright && x3 <= this.rows) }}
return null;
},/**
* 某個方向上的搜尋邏輯
*/matchblockunfold_axis: function (x1, y1, x2, y2, x3, y3, isaxis_x)
}return null;
},
參考資料
連連看小遊戲,遞迴問題
題目源自 程式設計實習 12章 遞迴問題。思路根本方式是遞迴,走迷宮類問題,處在每一步上都要列舉下一步的方向,用move陣列來儲存行進方向。另外用mark陣列來儲存是否訪問過 開始用puzzle陣列來表示板子分布,然後在外面多加一圈來輔助計算。遞迴函式關鍵在於每一次呼叫時,先判斷 當前步數是否大於最...
連連看小遊戲前端實現
先看一下遊戲的介面 一點選開始,遊戲就開始計時,頂部的折扣會飛速上公升,如果玩家玩的速度太慢的話那麼只能拿到乙個他都不想要的折扣了,呵呵 開始 span div div var gridw document.width 7 每乙個格仔的寬度,根據螢幕的寬度來定,做到自適應 var gridh doc...
連連看小遊戲專案梳理
如何保證每個元素都能找到配對的元素並且遊戲可以開始進行?直接相連的元素,需要拐乙個彎的元素,需要拐兩個彎的元素 如果有拐角的話,拐角的線是怎麼畫出來的 路徑是怎麼找到的?直接相連的元素 屬於同一行和同一列上的 需要拐乙個彎的 在乙個矩形的對邊的位置上,找到矩形的另外一組對角線,判斷before el...