婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > php實現的生成迷宮與迷宮尋址算法完整實例

php實現的生成迷宮與迷宮尋址算法完整實例

熱門標簽:網絡電話400申請 周口網絡回撥外呼系統 外呼系統人工客服 福建高頻外呼防封系統哪家好 400電話申請辦理 百度地圖標注類型是酒店 隨州銷售電銷機器人公司 全國各省地圖標注點 商丘外呼系統好處

本文實例講述了php實現的生成迷宮與迷宮尋址算法。分享給大家供大家參考,具體如下:

較之前的終于有所改善。生成迷宮的算法和尋址算法其實是一樣。只是一個用了遍歷一個用了遞歸。參考了網上的Mike Gold的算法。

?php
header('Content-Type: text/html; charset=utf-8');
error_reporting(E_ALL);
//n宮格迷宮
define('M', 39);//宮數
define("S", 20);//迷宮格大小
$_posArr = array(array(0, -1), array(1, 0), array(0, 1), array(-1, 0));//當前點尋址的四個xy方向 上右下左
//生成迷宮
$maze = array();
$mazeUnit = array(1, 1, 1, 1);//上右下左
for($x=0; $x=M; $x++){
  for($y=0; $y=M; $y++){
    $maze[$x][$y] = $mazeUnit;
  }
}
$maze2 = array();//破墻后的已訪問格子
$mazeOrder = array();//破墻順序
$x = $y = 0;//初始入口
while(count($maze)>0){
  $tmpArr = array();
  foreach($_posArr as $val){
    $nx = $x + $val[0];
    $ny = $y + $val[1];
    if(isset($maze[$nx][$ny])){//未破墻過的格子
      $tmpArr[] = array($nx, $ny);
    }
  }
  if($tmpArr){//有未破墻的格子,隨機出一個,破墻
    list($nx, $ny) = $tmpArr[array_rand($tmpArr)];
    $maze2[$nx][$ny] = $maze[$nx][$ny];
    if(empty($maze2[$x][$y])) $maze2[$x][$y] = $maze[$x][$y];
    $pos = array($nx - $x, $ny - $y);
    foreach($_posArr as $key=>$val){//循環四個方向,找出需要破的墻
      if($pos == $val) {
        $maze2[$x][$y][$key] = 0;//原格子破墻
        $maze2[$nx][$ny][($key+2)%4] = 0;//新格子破墻
      }
    }
    //設置新的當前格后返回繼續while循環
    $x = $nx;
    $y = $ny;
    $mazeOrder[] = array($x, $y);
    unset($maze[$x][$y]);//去掉已破墻的格子
    if(empty($maze[$x])) unset($maze[$x]);
  }else{//當前xy周圍不存在未破墻的格子,返回上一個格子繼續破墻
    array_pop($mazeOrder);
    if($mazeOrder) list($x, $y) = $mazeOrder[count($mazeOrder) - 1];
  }
}
//留出出口
$maze = $maze2;
$maze[0][0][3] = 0;
$maze[M][M][1] = 0;
//尋址
$pathArr = findPath($maze, 0, 0, false);
printMaze($maze, $pathArr);
echo "img src='maze.png'> a href='javascript:;' onclick='location.reload();'>刷新/a>";
//打印迷宮和尋址結果
function printMaze($maze, $pathArr){
  $im = ImageCreate((M + 1) * S + 1, (M + 1) * S + 1);
  $bg = ImageColorAllocate($im, 236, 233, 216);
  $pathColor=ImageColorAllocate($im, 255, 0, 0);
  $exitColor=ImageColorAllocate($im, 134, 255, 0);
  $borderColor = ImageColorAllocate($im, 0, 0, 0);
  ImageRectangle($im, 0, 0, (M + 1) * S, (M + 1) * S, $borderColor);//包邊
  ImageLine($im, 0, 0, 0, S, $bg);//右上邊開口
  ImageLine($im, (M + 1) * S, M * S, (M + 1) * S, (M + 1) * S, $bg);//左下邊開口
  foreach($maze as $x=>$xarr){//生成格子
    foreach($xarr as $y=>$unit){
      if($unit[0]) ImageLine($im, $x * S, $y * S, ($x + 1) * S, $y * S, $borderColor);//上有線
      if($unit[1]) ImageLine($im, ($x + 1) * S, $y * S, ($x + 1) * S, ($y + 1) * S, $borderColor);//右有線
      if($unit[2]) ImageLine($im, $x * S, ($y + 1) * S, ($x + 1) * S, ($y + 1) * S, $borderColor);//下有線
      if($unit[3]) ImageLine($im, $x * S, $y * S, $x * S, ($y + 1) * S, $borderColor);//左有線
      //if(in_array(array($x, $y), $pathArr)) ImageFilledEllipse($im, $x * S + S/2, $y * S + S/2, S, S, $pathColor);//尋址格
      if(in_array(array($x, $y), $pathArr)) ImageString($im, 1, $x * S + S/5, $y * S + S/5, array_search(array($x, $y), $pathArr), $pathColor);//尋址格
    }
  }
  ImagePNG($im, 'maze.png');
  ImageDestroy($im);
}
//尋址函數
function findPath($maze, $x, $y, $fromxy){
  global $_posArr;
  if($x == M  $y == M){//到達出口
    Return array(array($x, $y));
  }
  foreach($_posArr as $key=>$val){
    if($maze[$x][$y][$key]) continue;//為1則不通
    $nx = $x + $val[0];
    $ny = $y + $val[1];
    if(!isset($maze[$nx][$ny]) || $fromxy == array($nx, $ny)) continue;//邊界超出或為來源點
    if($pathArr = findPath($maze, $nx, $ny, array($x, $y))) {
      array_unshift($pathArr, array($x, $y));
      Return $pathArr;//能到達出口
    }
  }
  Return false;
}
?>

運行結果如下:

PS:這里再為大家推薦另一款本站基于JS的迷宮在線游戲供大家參考:

在線迷宮小游戲:
http://tools.jb51.net/games/migong

更多關于PHP相關內容感興趣的讀者可查看本站專題:《PHP數據結構與算法教程》、《php程序設計算法總結》、《php字符串(string)用法總結》、《PHP數組(Array)操作技巧大全》、《PHP常用遍歷算法與技巧總結》及《PHP數學運算技巧總結》

希望本文所述對大家PHP程序設計有所幫助。

您可能感興趣的文章:
  • PHP機器學習庫php-ml的簡單測試和使用方法
  • PHP實現圖的鄰接矩陣表示及幾種簡單遍歷算法分析
  • PHP對稱加密算法(DES/AES)類的實現代碼
  • PHP基于回溯算法解決n皇后問題的方法示例
  • PHP實現的貪婪算法實例
  • 利用PHP實現開心消消樂的算法示例
  • PHP實現的迪科斯徹(Dijkstra)最短路徑算法實例
  • PHP使用棧解決約瑟夫環問題算法示例
  • PHP基于遞歸實現的約瑟夫環算法示例
  • PHP實現機器學習之樸素貝葉斯算法詳解

標簽:佛山 十堰 迪慶 樂山 南寧 六安 定西 海南

巨人網絡通訊聲明:本文標題《php實現的生成迷宮與迷宮尋址算法完整實例》,本文關鍵詞  php,實現,的,生成,迷宮,與,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《php實現的生成迷宮與迷宮尋址算法完整實例》相關的同類信息!
  • 本頁收集關于php實現的生成迷宮與迷宮尋址算法完整實例的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    国产亚洲精品中文字幕| 亚洲电影激情视频网站| 国产在线视频精品一区| 欧美性生活大片视频| 亚洲一级在线观看| 精品精品国产高清一毛片一天堂| 国产成人免费在线视频| 亚洲自拍偷拍麻豆| 2024国产精品| 欧美最猛性xxxxx直播| 久久精品国产在热久久| 亚洲色图制服诱惑| 久久视频一区二区| 国产呦精品一区二区三区网站| 国产精品美女www爽爽爽| 97久久超碰精品国产| 亚洲日本va午夜在线电影| 日韩一区二区三区电影在线观看 | 欧美大片一区二区三区| 92国产精品观看| 韩国欧美国产1区| 亚洲一区视频在线观看视频| 国产嫩草影院久久久久| 欧美亚洲国产一卡| 午夜精品久久久久| 国产综合久久久久久久久久久久| 色综合天天综合网国产成人综合天| 一本到不卡精品视频在线观看| 精品久久久久久综合日本欧美| 色婷婷精品大在线视频| 午夜欧美2019年伦理| 国产亚洲精品aa午夜观看| 欧美精品vⅰdeose4hd| 色综合色狠狠综合色| 懂色av噜噜一区二区三区av| 蜜臀精品久久久久久蜜臀| 一区二区三区中文字幕在线观看| 国产日产欧美一区二区三区| 欧美一区二区三区视频免费播放| 色综合久久99| 国产精品成人免费| 中文字幕不卡在线观看| 依依成人综合视频| 免费国产亚洲视频| av电影在线观看不卡| 一本色道久久综合狠狠躁的推荐 | 亚洲v日本v欧美v久久精品| 日本在线播放一区二区三区| 日韩电影免费在线| 日本国产一区二区| 欧美a级一区二区| 91国偷自产一区二区开放时间| 成人美女视频在线观看18| 欧美浪妇xxxx高跟鞋交| www.av亚洲| 久久婷婷久久一区二区三区| 欧美区在线观看| 欧美日韩精品一区二区在线播放| 欧美性猛交xxxxxxxx| 国产偷国产偷精品高清尤物| 亚洲国产一区二区三区| 色一情一乱一乱一91av| 91久久精品一区二区| 色先锋资源久久综合| 成人不卡免费av| 日韩美女一区二区三区四区| 不卡的av网站| 精品久久久久久久久久久久久久久 | 91精品国产91久久久久久一区二区 | 一区二区三区成人| 国产在线麻豆精品观看| 欧美福利视频一区| 韩国三级中文字幕hd久久精品| 成人网在线播放| 91香蕉视频污在线| 国产亚洲va综合人人澡精品| 国产精品色哟哟| 国产精品美女一区二区在线观看| 精品视频全国免费看| 91麻豆精品久久久久蜜臀| 一个色妞综合视频在线观看| 日本高清免费不卡视频| 亚洲成人av一区| a4yy欧美一区二区三区| 久久久久成人黄色影片| 日本美女一区二区| 国产视频一区二区在线| 99精品欧美一区二区三区小说| 制服丝袜在线91| 一区二区三区四区中文字幕| 国产不卡在线视频| 欧美成人一区二区三区片免费| 亚洲免费观看高清完整版在线观看 | 久久这里只有精品首页| 国产一区日韩二区欧美三区| 亚洲国产精品ⅴa在线观看| 国产毛片精品视频| 国产亚洲婷婷免费| 91精品国产一区二区三区蜜臀| 中文一区二区完整视频在线观看 | 国产一区二区三区免费看| 欧美日韩国产一级| 午夜精彩视频在线观看不卡| 欧美猛男gaygay网站| 亚洲成av人片在线| 欧美一级黄色片| 国产呦精品一区二区三区网站| 久久久久青草大香线综合精品| 激情综合色综合久久| 精品国产乱码久久久久久影片| 日韩一级视频免费观看在线| 青青草国产精品97视觉盛宴 | 精品一区二区三区免费播放| 亚洲精品免费在线播放| 亚洲色图色小说| 91麻豆精品视频| 国产精品一区二区黑丝| 日韩国产精品大片| 一区二区三区中文字幕电影| 高潮精品一区videoshd| 中文字幕乱码久久午夜不卡 | 图片区日韩欧美亚洲| 日韩欧美国产一区二区在线播放| 国产一区二区主播在线| 亚洲丝袜美腿综合| 欧美伊人精品成人久久综合97| 不卡的电视剧免费网站有什么| 精品在线免费视频| 全部av―极品视觉盛宴亚洲| 成人午夜视频福利| 91蜜桃在线观看| 中文一区在线播放| 欧美xxxxx裸体时装秀| 欧美大片一区二区三区| 国产亚洲一区二区三区| 精品少妇一区二区| 久久蜜臀精品av| 色网站国产精品| 麻豆精品新av中文字幕| 国产精品美女www爽爽爽| 欧美午夜精品理论片a级按摩| 激情综合色综合久久综合| ...av二区三区久久精品| 欧美一区二区三区播放老司机 | 人人精品人人爱| 欧美v日韩v国产v| 一本大道久久a久久综合| 久久精品二区亚洲w码| 亚洲免费三区一区二区| 精品久久久久99| 亚洲v精品v日韩v欧美v专区| 欧美一级一区二区| 国产精品久久久久久一区二区三区| 国产成人精品亚洲午夜麻豆| 91精品国产色综合久久| 琪琪久久久久日韩精品| 欧美肥妇free| 亚洲精品中文字幕乱码三区| 欧美日本国产视频| 亚洲国产精品精华液网站| 狠狠色2019综合网| 亚洲专区一二三| 日本一区二区三区在线观看| 欧美成人午夜电影| 91麻豆精品国产91久久久使用方法| 91婷婷韩国欧美一区二区| 国产成人免费xxxxxxxx| 久久精品国产成人一区二区三区 | 久久精品视频免费观看| 欧美日韩综合不卡| 在线观看成人小视频| 成人h动漫精品| 国产成人午夜视频| 国产成人免费视频网站 | 67194成人在线观看| 波多野洁衣一区| 久久九九99视频| 欧美成人三级在线| 久久一夜天堂av一区二区三区| 欧美一区二区国产| 欧美一区二区精品久久911| 日韩一级黄色片| 5566中文字幕一区二区电影| 欧美日韩一区精品| 欧美人伦禁忌dvd放荡欲情| 欧美日本韩国一区| 91精品国产91久久综合桃花| 欧美一区二区黄| 欧美不卡一二三| 欧美极品aⅴ影院| 亚洲欧美综合色| 亚洲一级电影视频| 日韩黄色小视频| 美女视频第一区二区三区免费观看网站| 免费成人性网站| 国产一区二区主播在线| 亚洲一区二区av在线| 午夜欧美2019年伦理| 欧美群妇大交群的观看方式| 卡一卡二国产精品 |