結束點在關閉結點,說明已找到,完成

2022-01-15 14:47:44 字數 4004 閱讀 2969

webrtc安裝

using system;

using system.collections.generic;

using system.linq;

namespace jls.lib.astar

public listcloselist;

public listopenlist;

private list> _nodes = new list>();

private

int maxmapx;

private

int maxmapy;

public

int currentserialnumber = 0;

public astarclassic(int mapdata)

_nodes.add(row);}}

///

/// 尋路

///

///

///

///

///

public astarnode findpath(astarnode startnode, astarnode endnode, bool isignorecorner)

openlist.add(startnode);

startnode.isclose = true;

while (openlist.count != 0)

var adjacentpoints = getarounds(currentpoint, isignorecorner);

foreach (astarnode apoint in adjacentpoints)

if (! apoint.isopen )

else}}

}return getendpointincloselist(endnode);

}///

/// 如果結束結點不可用,查詢結束節點離開始節點最近的可用節點

///

///

///

///

private astarnode getwalkableendnode(astarnode startnode, astarnode endnode)

node = getpoint(endnode.x + i, endnode.y + aroundcount);

if (node != null && node.walkable)

}//左右兩列

for (var i = -aroundcount + 1; i < aroundcount; i++)

node = getpoint(endnode.x + aroundcount, endnode.y + i);

if (node != null && node.walkable)

}if (foudednodes.count > 0)

else

}//2.沒找到,說明沒有可用點

if (foudednodes.count == 0) return

null;

//找出該圈中離開始點最近的點

var foundincex = 0;

var shortdistance = getdistance(startnode, foudednodes[0]);

for (var i = 0; i < foudednodes.count; i++)

}return foudednodes[foundincex];

}///

/// 計算兩點直線距離

///

///

///

///

private

double getdistance(astarnode startnode, astarnode endnode)

private astarnode getpoint(int x, int y)

///

/// 查詢開放節點中最低h值的節點

///

///

private astarnode getlowestfscore()

///

/// 節點加入關閉列表

///

///

private

void addcloselist(astarnode anode)

///

/// 從開放節點中移去節點

///

///

private

void removeopenlist(astarnode anode)

///

/// 結束點在關閉結點,說明已找到,完成

///

///

///

private

bool isendincloselist(astarnode endnode)

///

/// 獲取當前點的周邊有效點

///

///

/// 能否穿牆角

///

private listgetarounds(astarnode currentnode, bool isignorecorner)}}

return arounds;

}///

/// 判斷斜線方向能否到達

///

///

///

/// 是否允許穿牆

///

private

bool canreachto(astarnode currentnode, astarnode anode, bool isignorecorner)

else

if (leftpoint.walkable || leftpoint.walkable) //有乙個

else

}///

/// 是不是有效的點

///

///

///

private

bool validpoint(int x, int y)

///

/// 關閉列表中是否存在該點

///

///

///

private

bool isincloselist(astarnode anode)

///

/// 開放列表中是否存在該點

///

///

///

private

bool isinopenlist(astarnode anode)

///

/// 加入開放列表

///

///

private

void addopenlist(astarnode anode)

///

/// 如果endpoint在關閉列表中,則返回它,否則返回null

///

///

///

private astarnode getendpointincloselist(astarnode endnode)

else}}

}從老的機器拷貝兩個目錄 d:\depot_tools;d:\webrtc

在path 中加入d:\depot_tools;

1.2.depot_tools目錄加入path

4.原來的all.sln生成,出現60+錯誤。

6.安裝directx sdk 安裝directxsdk時提示error code s1023,microsoft visual c++ 2010 x86/x64 redistributable 的版本大於10.0.30319 就會提示失敗!將這個解除安裝掉就可以安裝成功!!(中間有可能需重啟),安裝完後,再裝vc-compiler-kb2519277.exe

7.gclient config

中間中斷,執行

set gyp_generators=msvs

call python trunk/webrtc/build/gyp_webrtc -g msvs_version=2012

Tiptop ERP M MFG開放 關閉說明

何為 mfg manufacturing,在erp裡面指的是製造部或生產管理系統 tiptop erp 5.10.16 相關mfg 開啟關閉設定作業 對於製造行業的erp,製造管理系統 生產管理系統乙個很重要的模組 tiptop通過設定asms000 asms999設定此模組是否開放使用 asms0...

鍊錶中定義結點在C C 中的區別

為了建立如圖所示的儲存結構 即每個結點含有2個域,data是資料域,next是指向結點的指標域 則在處應填寫的選項是 b struct link node a link next b struct link next c link next d struct link next 在c 語言中,b和c...

JVM結束時執行關閉鉤子

jvm正常結束時 正常結束時,首先呼叫已註冊的關閉鉤子,關閉鉤子是在runtime上註冊的執行緒,在關閉鉤子執行完畢後,jvm呼叫終結器,結束執行。如果關閉鉤子沒有停止執行,jvm不會結束執行。在jvm最終結束執行時,如果此時還有正在執行的應用程式執行緒,那麼這些執行緒會被強行關閉。jvm強行結束時...