五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

戰(zhàn)棋游戲移動(dòng)范圍算法

2022-05-21 12:18 作者:Nimanggi  | 我要投稿

---------------------------------------------------------------------------------


做一個(gè)四邊格戰(zhàn)棋類游戲的移動(dòng)范圍算法。


基本規(guī)則是:

? ? 四邊格,只允許臨邊移動(dòng)(上、下、左、右)。

? ? 有計(jì)步規(guī)則,每個(gè)格的計(jì)步權(quán)重為“1”。

? ? 障礙格不許移動(dòng)。


實(shí)現(xiàn)邏輯:


while (步數(shù) > 0) {

? ? 1. 設(shè)置角色當(dāng)前的位置

? ? 2. 計(jì)算當(dāng)前剩余的步數(shù)

? ? 3. 分別判斷當(dāng)前格子四周是否可以移動(dòng)(是否為障礙格或已達(dá)到邊界)

}


```

? ? ?+----+

? ? ?| 02 |

+----+----+----+

| 01 | 00 | 03 |

+----+----+----+

? ? ?| 04 |

? ? ?+----+

```




/**

 * 獲取角色移動(dòng)范圍

 * @param __actorSite__ 角色位置

 * @param __moveRange__ 角色可移動(dòng)范圍

 */

XXX.prototype.getMovingRangeSites = function (__actorSite__, __moveRange__) {

 ? ?// 地圖大小

 ? ?let mapSize = this._battleAPI._battleData.getMapSize();

 ? ?// 初始化

 ? ?let siteHasBeenChosenArr = new Array(mapSize.width);

 ? ?for (let i = 0; i < siteHasBeenChosenArr.length; ++i) {

 ? ? ? ?siteHasBeenChosenArr[i] = new Array(mapSize.height);

 ? ?}

 ? ?// 檢索site是否被選擇的臨時(shí)用數(shù)組,標(biāo)記全地圖的site是否被使用

 ? ?for (let i = 0; i < mapSize.width; ++i) {

 ? ? ? ?for (let j = 0; j < mapSize.height; ++j) {

 ? ? ? ? ? ?siteHasBeenChosenArr[i][j] = 0;

 ? ? ? ?}

 ? ?}



 ? ?// 初始化結(jié)果數(shù)組

 ? ?let rangeSitesArr = [];



 ? ?// 判斷range范圍是否合法

 ? ?if (__moveRange__ >= 1 && __moveRange__ <= 20) {

 ? ? ? ?//

 ? ? ? ?let cellsToBeCheckArr = [];

 ? ? ? ?cellsToBeCheckArr.push(__actorSite__);



 ? ? ? ?// 根據(jù)角色移動(dòng)的步數(shù)檢索幾次

 ? ? ? ?for (let index = 1; index <= __moveRange__; index++) {



 ? ? ? ? ? ?// 臨時(shí)保存本次檢查出來的site

 ? ? ? ? ? ?let tempArr = [];



 ? ? ? ? ? ?// 當(dāng)前步數(shù)能走到的site

 ? ? ? ? ? ?for (const iterator of cellsToBeCheckArr) {

 ? ? ? ? ? ? ? ?// 檢索順序:左 上 右 下

 ? ? ? ? ? ? ? ?// 相鄰節(jié)點(diǎn)坐標(biāo)

 ? ? ? ? ? ? ? ?let siteLeft = {

 ? ? ? ? ? ? ? ? ? ?x: iterator.x - 1,

 ? ? ? ? ? ? ? ? ? ?y: iterator.y

 ? ? ? ? ? ? ? ?};



 ? ? ? ? ? ? ? ?// 判斷是否滿足邏輯要求的條件 及 檢索時(shí)是否已經(jīng)選擇過該點(diǎn)

 ? ? ? ? ? ? ? ?if (this._checkSiteEnable(siteLeft) && !this._checkSiteHasBeenChosen(siteLeft, siteHasBeenChosenArr)) {

 ? ? ? ? ? ? ? ? ? ?// 將該點(diǎn)設(shè)置成一倍檢索狀態(tài)

 ? ? ? ? ? ? ? ? ? ?siteHasBeenChosenArr[siteLeft.x][siteLeft.y] = 1;

 ? ? ? ? ? ? ? ? ? ?// 保存該點(diǎn)到結(jié)果數(shù)組

 ? ? ? ? ? ? ? ? ? ?rangeSitesArr.push(siteLeft);

 ? ? ? ? ? ? ? ? ? ?// 保存該點(diǎn)到臨時(shí)數(shù)組,作為下次循環(huán)的根節(jié)點(diǎn)

 ? ? ? ? ? ? ? ? ? ?tempArr.push(siteLeft);

 ? ? ? ? ? ? ? ?}



 ? ? ? ? ? ? ? ?let siteUp = {

 ? ? ? ? ? ? ? ? ? ?x: iterator.x,

 ? ? ? ? ? ? ? ? ? ?y: iterator.y + 1,

 ? ? ? ? ? ? ? ?};



 ? ? ? ? ? ? ? ?if (this._checkSiteEnable(siteUp) && !this._checkSiteHasBeenChosen(siteUp, siteHasBeenChosenArr)) {

 ? ? ? ? ? ? ? ? ? ?siteHasBeenChosenArr[siteUp.x][siteUp.y] = 1;

 ? ? ? ? ? ? ? ? ? ?rangeSitesArr.push(siteUp);

 ? ? ? ? ? ? ? ? ? ?tempArr.push(siteUp);

 ? ? ? ? ? ? ? ?}



 ? ? ? ? ? ? ? ?let siteRight = {

 ? ? ? ? ? ? ? ? ? ?x: iterator.x + 1,

 ? ? ? ? ? ? ? ? ? ?y: iterator.y

 ? ? ? ? ? ? ? ?};



 ? ? ? ? ? ? ? ?if (this._checkSiteEnable(siteRight) && !this._checkSiteHasBeenChosen(siteRight, siteHasBeenChosenArr)) {

 ? ? ? ? ? ? ? ? ? ?siteHasBeenChosenArr[siteRight.x][siteRight.y] = 1;

 ? ? ? ? ? ? ? ? ? ?rangeSitesArr.push(siteRight);

 ? ? ? ? ? ? ? ? ? ?tempArr.push(siteRight);

 ? ? ? ? ? ? ? ?}



 ? ? ? ? ? ? ? ?let siteDown = {

 ? ? ? ? ? ? ? ? ? ?x: iterator.x,

 ? ? ? ? ? ? ? ? ? ?y: iterator.y - 1,

 ? ? ? ? ? ? ? ?};



 ? ? ? ? ? ? ? ?if (this._checkSiteEnable(siteDown) && !this._checkSiteHasBeenChosen(siteDown, siteHasBeenChosenArr)) {

 ? ? ? ? ? ? ? ? ? ?siteHasBeenChosenArr[siteDown.x][siteDown.y] = 1;

 ? ? ? ? ? ? ? ? ? ?rangeSitesArr.push(siteDown);

 ? ? ? ? ? ? ? ? ? ?tempArr.push(siteDown);

 ? ? ? ? ? ? ? ?}

 ? ? ? ? ? ?}



 ? ? ? ? ? ?// 將本次循環(huán)檢索出來的site 放入待檢查數(shù)組,以便下次循環(huán)使用

 ? ? ? ? ? ?cellsToBeCheckArr = tempArr;

 ? ? ? ?}

 ? ?} else {

 ? ? ? ?// range不合法時(shí)直接返回null

 ? ? ? ?rangeSitesArr = null;

 ? ?}



 ? ?return rangeSitesArr;

};




戰(zhàn)棋游戲移動(dòng)范圍算法的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國家法律
天全县| 新野县| 蒲江县| 漳州市| 金湖县| 朝阳县| 运城市| 体育| 雷山县| 清远市| 乌审旗| 哈巴河县| 石阡县| 靖安县| 阳泉市| 盐山县| 洛南县| 新巴尔虎左旗| 济源市| 德化县| 云阳县| 海宁市| 上杭县| 祁阳县| 长垣县| 武宁县| 思南县| 望江县| 蓬溪县| 逊克县| 丹江口市| 连山| 苏尼特左旗| 从江县| 蕲春县| 荔波县| 清涧县| 上栗县| 平定县| 台山市| 色达县|