<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 22,comments - 35,trackbacks - 0
    < html >< head >< title > use?A * ?to?find?path </ title ></ head >
    < body?style = " margin:0px " >
    < script >
    /*
    written?by?hjjboy
    email:tianmashuangyi@163.com
    qq:156809986
    */
    var ?closelist = new ?Array(),openlist = new ?Array();
    var ?gw = 10 ,gh = 10 ,gwh = 14 ;
    var ?p_start = new ?Array( 2 ),p_end = new ?Array( 2 );
    var ?s_path,n_path = "" ;
    var ?num,bg,flag = 0 ;
    var ?w = 30 ,h = 20 ;
    function ?GetRound(pos){
    ??
    var ?a = new ?Array();
    ??a[
    0 ] = (pos[ 0 ] + 1 ) + " , " + (pos[ 1 ] - 1 );
    ??a[
    1 ] = (pos[ 0 ] + 1 ) + " , " + pos[ 1 ];
    ??a[
    2 ] = (pos[ 0 ] + 1 ) + " , " + (pos[ 1 ] + 1 );
    ??a[
    3 ] = pos[ 0 ] + " , " + (pos[ 1 ] + 1 );
    ??a[
    4 ] = (pos[ 0 ] - 1 ) + " , " + (pos[ 1 ] + 1 );
    ??a[
    5 ] = (pos[ 0 ] - 1 ) + " , " + pos[ 1 ];
    ??a[
    6 ] = (pos[ 0 ] - 1 ) + " , " + (pos[ 1 ] - 1 );
    ??a[
    7 ] = pos[ 0 ] + " , " + (pos[ 1 ] - 1 );
    ??
    return ?a;
    }
    function ?GetF(arr){
    ??
    var ?t,G,H,F;
    ??
    for ( var ?i = 0 ;i < arr.length;i ++ ){
    ????t
    = arr[i].split( " , " );
    ????t[
    0 ] = parseInt(t[ 0 ]);t[ 1 ] = parseInt(t[ 1 ]);
    ????
    if (IsOutScreen([t[ 0 ],t[ 1 ]]) || IsPass(arr[i]) || InClose([t[ 0 ],t[ 1 ]]) || IsStart([t[ 0 ],t[ 1 ]]) ||! IsInTurn([t[ 0 ],t[ 1 ]]))
    ????????
    continue ;
    ????
    if ((t[ 0 ] - s_path[ 3 ][ 0 ]) * (t[ 1 ] - s_path[ 3 ][ 1 ]) != 0 )
    ????????G
    = s_path[ 1 ] + gwh;
    ????
    else
    ????????G
    = s_path[ 1 ] + gw;
    ????
    if (InOpen([t[ 0 ],t[ 1 ]])){
    ????????
    if (G < openlist[num][ 1 ]){
    ??????????openlist[num][
    0 ] = (G + openlist[num][ 2 ]);
    ??????????openlist[num][
    1 ] = G;
    ??????????openlist[num][
    4 ] = s_path[ 3 ];
    ????????}
    ????????
    else {G = openlist[num][ 1 ];}
    ????}
    ????
    else {
    ????????H
    = (Math.abs(p_end[ 0 ] - t[ 0 ]) + Math.abs(p_end[ 1 ] - t[ 1 ])) * gw;
    ????????F
    = G + H;
    ????????arr[i]
    = new ?Array();
    ????????arr[i][
    0 ] = F;arr[i][ 1 ] = G;arr[i][ 2 ] = H;arr[i][ 3 ] = [t[ 0 ],t[ 1 ]];arr[i][ 4 ] = s_path[ 3 ];
    ????????openlist[openlist.length]
    = arr[i];
    ????}
    ????
    if (maptt.rows[t[ 1 ]].cells[t[ 0 ]].style.backgroundColor != " #cccccc " && maptt.rows[t[ 1 ]].cells[t[ 0 ]].style.backgroundColor != " #0000ff " && maptt.rows[t[ 1 ]].cells[t[ 0 ]].style.backgroundColor != " #ff0000 " && maptt.rows[t[ 1 ]].cells[t[ 0 ]].style.backgroundColor != " #00ff00 " )
    ????{
    ????????maptt.rows[t[
    1 ]].cells[t[ 0 ]].style.backgroundColor = " #FF00FF " ;
    ????????
    // maptt.rows[t[1]].cells[t[0]].innerHTML="<font?color=white>"+G+"</font>";
    ????}
    ??}
    }
    function ?IsStart(arr){
    ??
    if (arr[ 0 ] == p_start[ 0 ] && arr[ 1 ] == p_start[ 1 ])
    ????
    return ? true ;
    ??
    return ? false ;
    }
    function ?IsInTurn(arr){
    ??
    if (arr[ 0 ] > s_path[ 3 ][ 0 ]){
    ????
    if (arr[ 1 ] > s_path[ 3 ][ 1 ]){
    ????????
    if (IsPass((arr[ 0 ] - 1 ) + " , " + arr[ 1 ]) || IsPass(arr[ 0 ] + " , " + (arr[ 1 ] - 1 )))
    ??????????
    return ? false ;
    ????}
    ????
    else ? if (arr[ 1 ] < s_path[ 3 ][ 1 ]){
    ????????
    if (IsPass((arr[ 0 ] - 1 ) + " , " + arr[ 1 ]) || IsPass(arr[ 0 ] + " , " + (arr[ 1 ] + 1 )))
    ??????????
    return ? false ;
    ????}
    ??}
    ??
    else ? if (arr[ 0 ] < s_path[ 3 ][ 0 ]){
    ????
    if (arr[ 1 ] > s_path[ 3 ][ 1 ]){
    ????????
    if (IsPass((arr[ 0 ] + 1 ) + " , " + arr[ 1 ]) || IsPass(arr[ 0 ] + " , " + (arr[ 1 ] - 1 )))
    ??????????
    return ? false ;
    ????}
    ????
    else ? if (arr[ 1 ] < s_path[ 3 ][ 1 ]){
    ????????
    if (IsPass((arr[ 0 ] + 1 ) + " , " + arr[ 1 ]) || IsPass(arr[ 0 ] + " , " + (arr[ 1 ] + 1 )))
    ??????????
    return ? false ;
    ????}
    ??}
    ??
    return ? true ;
    }
    function ?IsOutScreen(arr){
    ??
    if (arr[ 0 ] < 0 || arr[ 1 ] < 0 || arr[ 0 ] > (w - 1 ) || arr[ 1 ] > (h - 1 ))
    ????
    return ? true ;
    ??
    return ? false ;
    }
    function ?InOpen(arr){
    ??
    var ?bool = false ;
    ??
    for ( var ?i = 0 ;i < openlist.length;i ++ ){
    ????
    if (arr[ 0 ] == openlist[i][ 3 ][ 0 ] && arr[ 1 ] == openlist[i][ 3 ][ 1 ]){
    ????????bool
    = true ;num = i; break ;}
    ??}
    ??
    return ?bool;
    }
    function ?InClose(arr){
    ??
    var ?bool = false ;
    ??
    for ( var ?i = 0 ;i < closelist.length;i ++ ){
    ????
    if ((arr[ 0 ] == closelist[i][ 3 ][ 0 ]) && (arr[ 1 ] == closelist[i][ 3 ][ 1 ])){
    ????????bool
    = true ; break ;}
    ??}
    ??
    return ?bool;
    }
    function ?IsPass(pos){
    ??
    if (( " ; " + n_path + " ; " ).indexOf( " ; " + pos + " ; " ) !=- 1 )
    ????
    return ? true ;
    ??
    return ? false ;
    }
    function ?Sort(arr){
    ??
    var ?temp;
    ??
    for ( var ?i = 0 ;i < arr.length;i ++ ){
    ????
    if (arr.length == 1 ) break ;
    ????
    if (arr[i][ 0 ] <= arr[i + 1 ][ 0 ]){
    ????????temp
    = arr[i];
    ????????arr[i]
    = arr[i + 1 ];
    ????????arr[i
    + 1 ] = temp;
    ????}
    ????
    if ((i + 1 ) == (arr.length - 1 ))
    ????????
    break ;
    ??}
    }
    function ?main(){
    ????GetF(GetRound(s_path[
    3 ]));
    ????Sort(openlist);
    ????s_path
    = openlist[openlist.length - 1 ];
    ????closelist[closelist.length]
    = s_path;
    ????openlist[openlist.length
    - 1 ] = null ;
    ????
    if (openlist.length == 0 ){alert( " 找不到路徑 " ); return ;}
    ????openlist.length
    = openlist.length - 1 ;
    ????
    if ((s_path[ 3 ][ 0 ] == p_end[ 0 ]) && (s_path[ 3 ][ 1 ] == p_end[ 1 ])){
    ????????getPath();
    ????}
    ????
    else {maptt.rows[s_path[ 3 ][ 1 ]].cells[s_path[ 3 ][ 0 ]].style.backgroundColor = " #00ff00 " ;setTimeout( " main() " , 100 );}
    }
    function ?getPath(){
    ??
    var ?str = "" ;
    ??
    var ?t = closelist[closelist.length - 1 ][ 4 ];
    ??
    while ( 1 ){
    ????str
    += t.join( " , " ) + " ; " ;
    ????maptt.rows[t[
    1 ]].cells[t[ 0 ]].style.backgroundColor = " #ffff00 " ;
    ????
    for ( var ?i = 0 ;i < closelist.length;i ++ ){
    ????????
    if (closelist[i][ 3 ][ 0 ] == t[ 0 ] && closelist[i][ 3 ][ 1 ] == t[ 1 ])
    ??????????t
    = closelist[i][ 4 ];
    ????}
    ????
    if (t[ 0 ] == p_start[ 0 ] && t[ 1 ] == p_start[ 1 ])
    ????????
    break ;
    ??}
    ??alert(str);
    }
    function ?setPos(){
    ??
    var ?h = (Math.abs(p_end[ 0 ] - p_start[ 0 ]) + Math.abs(p_end[ 1 ] - p_start[ 1 ])) * gw;
    ??s_path
    = [h, 0 ,h,p_start,p_start];
    }
    function ?set(id,arr){
    ??
    switch (id){
    ????
    case ? 1 :
    ????????p_start
    = arr;
    ????????maptt.rows[arr[
    1 ]].cells[arr[ 0 ]].style.backgroundColor = " #ff0000 " ; break ;
    ????
    case ? 2 :
    ????????p_end
    = arr;maptt.rows[arr[ 1 ]].cells[arr[ 0 ]].style.backgroundColor = " #0000ff " ; break ;
    ????
    case ? 3 :
    ????????n_path
    += arr.join( " , " ) + " ; " ;maptt.rows[arr[ 1 ]].cells[arr[ 0 ]].style.backgroundColor = " #cccccc " ; break ;
    ????
    default :
    ????????
    break ;
    ??}
    }
    function ?setflag(id){flag = id;}
    </ script >
    < table?id = " maptt " ?cellspacing = " 1 " ?cellpadding = " 0 " ?border = " 0 " ?bgcolor = " #000000 " >
    < script >
    for ( var ?i = 0 ;i < h;i ++ ){
    ??document.write(
    " <tr> " );
    ??
    for ( var ?j = 0 ;j < w;j ++ ){
    ????document.write('
    < td?onclick = " set(flag,['+j+','+i+']); " ?bgcolor = " #ffffff " ?width = " 20 " ?height = " 20 " ></ td > ');
    ??}
    ??document.write(
    " </tr> " );
    }
    </ script >
    </ table >
    < a?href = " javascript:setflag(1); " > 設置起點 </ a >< br >
    < a?href = 'javascript:setflag( 2 );' > 設置終點 </ a >< br >
    < a?href = 'javascript:setflag( 3 );' > 設置障礙點 </ a >< br >
    < input?type = " button " ?onclick = " setPos();main();this.disabled=true; " ?value = " find " >
    </ body >
    </ html >
    posted on 2006-06-30 11:54 kelven 閱讀(880) 評論(0)  編輯  收藏 所屬分類: JavaScript
    主站蜘蛛池模板: 免费看国产曰批40分钟| 18成禁人视频免费网站| 亚洲国产精品va在线播放| 狠狠综合亚洲综合亚洲色| 日本免费v片一二三区| 亚洲kkk4444在线观看| 久久WWW色情成人免费观看| 亚洲中文字幕日本无线码 | 免费视频精品一区二区三区| 亚洲精品无码专区2| 久久免费观看视频| 亚洲熟妇av一区二区三区漫画| 两个人看www免费视频| 亚洲好看的理论片电影| 久草在视频免费福利| 亚洲 欧洲 日韩 综合在线| 日韩视频免费在线| 一级做a爰片久久免费| 亚洲国产成人高清在线观看| 99re在线视频免费观看| 亚洲一区二区三区四区视频| 四虎影院免费视频| 一区二区三区免费视频观看| 久久99国产亚洲精品观看| 4hu四虎最新免费地址| 亚洲爆乳成av人在线视菜奈实| 亚洲国产综合精品一区在线播放| 中文字幕不卡免费视频| 亚洲视频小说图片| 成年女人永久免费观看片| 久久久免费观成人影院| 亚洲日韩在线视频| 免费观看四虎精品国产永久| 另类免费视频一区二区在线观看| 亚洲欧洲日韩不卡| 日本大片在线看黄a∨免费| 精品乱子伦一区二区三区高清免费播放 | 亚洲国产成人精品无码久久久久久综合 | 亚洲国产人成精品| 91精品免费高清在线| 亚洲AV香蕉一区区二区三区|