<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日韩av无码| 亚洲国产超清无码专区| 偷自拍亚洲视频在线观看99| 中文无码日韩欧免费视频| 少妇高潮太爽了在线观看免费| 免费无码又爽又刺激高潮的视频| baoyu777永久免费视频| 妞干网手机免费视频| 国产亚洲情侣一区二区无码AV| 日本无吗免费一二区| 亚洲成AV人片在线观看WWW| 国产亚洲福利在线视频| 国产一级高青免费| 亚洲AV无码一区二区三区DV| 男女超爽视频免费播放| 狼友av永久网站免费观看| 偷自拍亚洲视频在线观看| 久久久久亚洲爆乳少妇无| 久久大香伊焦在人线免费| 国产一级淫片免费播放电影| 亚洲最新视频在线观看| 日本高清不卡中文字幕免费| 中文字幕免费观看| 亚洲男人av香蕉爽爽爽爽| 亚洲精品国产日韩| 亚洲不卡无码av中文字幕| 亚洲欧美aⅴ在线资源| 亚洲M码 欧洲S码SSS222| 日本xxxx色视频在线观看免费| 久久国内免费视频| 国产AV无码专区亚洲A∨毛片| 亚洲中文无码永久免费| 五月亭亭免费高清在线| 777亚洲精品乱码久久久久久| 亚洲深深色噜噜狠狠网站| 免费乱码中文字幕网站| 亚洲欧美在线x视频| 午夜成人免费视频|