<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 閱讀(879) 評論(0)  編輯  收藏 所屬分類: JavaScript
    主站蜘蛛池模板: 亚洲AV人无码综合在线观看| 亚洲人成电影亚洲人成9999网| 国产免费A∨在线播放| 久久久亚洲欧洲日产国码农村| 国产在线观看麻豆91精品免费 | 在线观看亚洲天天一三视| 国产成人精品无码免费看| 亚洲国产91在线| 久久九九亚洲精品| 女人毛片a级大学毛片免费| 国产日韩在线视频免费播放| 亚洲伊人精品综合在合线| 国产成人亚洲综合无码| 无码精品A∨在线观看免费 | 精品无码免费专区毛片| 免费人妻精品一区二区三区| 亚洲视频在线一区二区三区| 亚洲成a人在线看天堂无码| 亚洲一区二区三区免费在线观看| 免费国产a理论片| 亚洲人成电影网站久久| 久久亚洲成a人片| 亚洲国产香蕉人人爽成AV片久久| 黄+色+性+人免费| 国产在线一区二区综合免费视频| 午夜亚洲WWW湿好爽| 亚洲人成影院午夜网站| 亚洲AV无码一区二区乱孑伦AS| 国产一级一片免费播放| 午夜免费1000部| 久久综合国产乱子伦精品免费| 一个人看的www视频免费在线观看| 国产精品久久亚洲不卡动漫| 亚洲国产人成网站在线电影动漫| 亚洲?v女人的天堂在线观看| 24小时免费直播在线观看| 18禁美女裸体免费网站| 特级做A爰片毛片免费看无码 | 亚洲爆乳无码专区| 亚洲日本一区二区三区在线不卡| 免费看大美女大黄大色|