成人性生交大片免费看视频r_亚洲综合极品香蕉久久网_在线视频免费观看一区_亚洲精品亚洲人成人网在线播放_国产精品毛片av_久久久久国产精品www_亚洲国产一区二区三区在线播_日韩一区二区三区四区区区_亚洲精品国产无套在线观_国产免费www

主頁 > 知識庫 > 利用PHP實現開心消消樂的算法示例

利用PHP實現開心消消樂的算法示例

熱門標簽:怎么在高德地圖標注行走軌跡 安徽移動外呼系統(tǒng) 個性化地圖標注在線 深圳400電話辦理那家好 襄陽房產電銷機器人招商 施工地圖標注怎么做 百度地圖標注飯店位置怎么 清遠陽山400電話號碼如何申請 百度地圖標注名編輯

前言

本文主要介紹了關于PHP如何實現我們大家都知道的開心消消樂的算法,分享出來供大家參考學習,下面話不多說了,來一起看看詳細的介紹吧。

一、需求描述:

      1、在一個8*8的矩陣方格中隨機出現5種顏色的色塊。

      2、當有三個或以上色塊在橫向或縱向上相連,則消除這些色塊。

      3、色塊消除后,上方色塊往下平移,并掉下顏色隨機的色塊填充矩陣空缺。

      4、重復2、3步驟。

      5、消除3個相同色塊加10分,4個加15分,5個加20分,6個加30分,7個加40分,8個加70分,9個加100分,10個加150分,再往后每增加一個就比上一個多加50分。

二、上代碼

?php
//所有圖形初始化數據,key代表位置,value代表顏色
$xxl = array(
 array('', '', '', '', '', '', '', ''),
 array('', '', '', '', '', '', '', ''),
 array('', '', '', '', '', '', '', ''),
 array('', '', '', '', '', '', '', ''),
 array('', '', '', '', '', '', '', ''),
 array('', '', '', '', '', '', '', ''),
 array('', '', '', '', '', '', '', ''),
 array('', '', '', '', '', '', '', ''),
);
$point = play($xxl, $point);//開始游戲
echo "\n共獲得積分數量:{$point}";

/*開始消除
 *$xxl  array 所有圖形集合
 *$point int  獲得積分數量
*/
$bu = 0;
function play($xxl, $point){
 global $bu;
 $bu ++;
 echo '=================================開始第'.$bu.'步==================================';
 $color = array(1 => 'red',2 => 'green',3 => 'yellow',4 => 'blue',5 => 'black');//代表5種顏色
 $samCol = array();//列上相連色塊集合
 $nowCol = array();//列上相連色塊指針
 $samArr = array();//相連色塊總集合
 $group = 1;//組指針

 //隨機填充顏色,并獲得行上相連色塊start
 foreach($xxl as $k1 => $v1){
  $sam = array();//行上相連色塊集合
  $now = 1;//行上相連色塊指針
  foreach($v1 as $k2 => $v2){
   if(empty($v2) || $v2 == ' '){
    $v2 = $xxl[$k1][$k2] = array_rand($color);//隨機填充顏色
   }
   if(!isset($nowCol[$k2])){
    $nowCol[$k2] = 1;
   }
   if($k1 === 0){
    $samCol[$k2][$nowCol[$k2]][$k1 .'-'. $k2] = array($k1, $k2, $v2, $k1 .'-'. $k2 .'-'. $v2);
   }else{
    if($v2 != $xxl[$k1-1][$k2]){//同一列上和前一個顏色不一樣
     $nowCol[$k2] ++;
    }
    $samCol[$k2][$nowCol[$k2]][$k1 .'-'. $k2] = array($k1, $k2, $v2, $k1 .'-'. $k2 .'-'. $v2);
   }


   if($k2 === 0){
    $sam[$now][$k1 .'-'. $k2] = array($k1, $k2, $v2, $k1 .'-'. $k2 .'-'. $v2);
   }else{
    if($v2 != $xxl[$k1][$k2-1]){//同一行上和前一個顏色不一樣
     $now++;
    }
    $sam[$now][$k1 .'-'. $k2] = array($k1, $k2, $v2, $k1 .'-'. $k2 .'-'. $v2);
   }
  }
  //獲得行上相連色塊start
  foreach($sam as $x => $y){
   if(count($y) > 2){
    $key = 'R-'.$group;
    foreach($y as $x2 => $y2){
     $y[$x2]['group']['r'] = $key;
    }
    $samArr += $y;
    $group ++;
   }
  }
  //獲得行上相連色塊end
 }
 //隨機填充顏色,并獲得行上相連色塊end

 //獲得列上相連色塊start
 $group = 1;
 foreach($samCol as $k => $v){
  foreach($v as $x => $y){
   if(count($y) > 2){
    $key = 'L-'.$group;
    foreach($y as $x2 => $y2){
     $y[$x2]['group']['l'] = $key;
     if(isset($samArr[$x2]['group']['r'])){//判斷本點是否已出現在橫向組里
      $samArr[$x2]['group']['l'] = $key;
     }
    }
    $samArr += $y;
    $group ++;
   }
  }
 }
 //獲得列上相連色塊end

 //查找相連色塊start
 $res = array();//相連色塊集合
 $hasRes = array();
 foreach($samArr as $k => $v){
  if(isset($hasRes[$k])){
   continue;
  }
  $arr = array();
  seek($samArr, $v, $arr);
  $res[] = array_keys($arr);
  $hasRes += $arr;
 }
 //查找相連色塊end
 show($xxl);//打印消除前的圖形
 if(empty($res)){//如果沒有相連色塊則退出遞歸
  echo '=================================消除完畢!==================================';
  return $point;
 }
 $thisPoint = countPoint($res);//計算本次消除獲得積分
 $point += $thisPoint;//累計到總積分

 //消除相連色塊start
 $next = $xxl;
 foreach($res as $k => $v){
  foreach($v as $k2 => $v2){
   $y = $samArr[$v2][0];
   $x = $samArr[$v2][1];
   $xxl[$y][$x] = '*';
   unset($next[$y][$x]);
  }
 }
 //消除相連色塊end

 show($xxl);//打印消除時的圖形
 $next = step($next);
 show($next);//打印消除后的圖形
 echo "本次消除獲得積分數量:{$thisPoint}\n";
 return play($next, $point);
}

/*計算獲得積分數量
 *$xxl  array 相連色塊集合
 */
function countPoint($xxl){
 //初始化積分配置start
 $config = array(3 => 10, 4 => 15, 5 => 20, 6 => 30, 7 => 40, 8 => 70, 9 => 100);
 for($i = 10; $i = 64; $i++){
  $config[$i] = 100 + ($i - 9) * 50;
 }
 //初始化積分配置end
 $point = 0;
 foreach($xxl as $v){
  $key = count($v);
  $point += $config[$key];
 }
 return $point;
}

/*消掉并左移
 *$xxl  array 所有圖形集合
 */
function step($xxl){
 foreach($xxl as $k => $v){
  $temp = array_merge($v);
  $count = count($temp);
  if($count == 8){
   continue;
  }
  for($i = $count; $i = 7; $i++){
   $temp[$i] = ' ';
  }
  $xxl[$k] = $temp;
 }
 return $xxl;
}

/*找相鄰點
 *$xxl  array 相連圖形集合
 *$one   array 某一個點
 *$arr   array 圖形集合里的相鄰的點
*/
function seek($xxl, $one, $arr){
// global $i;
 $near = array();
 $near['up'] = ($one[0] - 1).'-'.$one[1];//上面的點
 $near['down'] = ($one[0] + 1).'-'.$one[1];//下面的點
 $near['left'] = $one[0].'-'.($one[1] - 1);//左面的點
 $near['right'] = $one[0].'-'.($one[1] + 1);//右面的點
 foreach($near as $v){
  if(isset($xxl[$v])  $xxl[$v][2] == $one[2]){//找到相鄰點
   $xj = array_intersect($one['group'], $xxl[$v]['group']);
   if(empty($xj)){//如果相鄰的點不是本組的就跳過
    continue;
   }
   if(isset($arr[$v])){//如果該點已被遍歷過則跳過
    continue;
   }
   $arr[$v] = $xxl[$v];
   seek($xxl, $xxl[$v], $arr);//繼續(xù)找相鄰的點
  }
 }
}

/*打印圖形
 *$xxl  array 所有圖形集合
 */
function show($xxl){
 //順時針旋轉矩陣start
 $arr = array();
 foreach($xxl as $k => $v){
  foreach($v as $k2 => $v2){
   $arr[7-$k2][$k] = $v2;
  }
 }
 ksort($arr);
 //順時針旋轉矩陣end
 $str = '';
 foreach($arr as $v){
  foreach($v as $v2){
   $str .= ' '.$v2;
  }
  $str .= "\n";
 }
 echo "\n".$str;
}

運行結果如下:

12345分別代表5種顏色。

=================================開始第1步==================================
 3 3 2 2 1 1 1 4
 4 3 4 3 4 1 1 3
 3 1 4 1 1 4 1 2
 2 3 4 3 1 2 4 4
 4 2 4 2 2 2 1 4
 3 3 2 1 2 3 1 1
 5 2 1 3 2 1 4 5
 3 4 5 1 3 2 3 3

 3 3 2 2 * * * 4
 4 3 * 3 4 1 * 3
 3 1 * 1 1 4 * 2
 2 3 * 3 1 2 4 4
 4 2 * * * * 1 4
 3 3 2 1 * 3 1 1
 5 2 1 3 * 1 4 5
 3 4 5 1 3 2 3 3

 3 3   4
 4 3 2  3
 3 1 3 1 2
 2 3 1 4 4 4
 4 2 2 3 4 2 1 4
 3 3 2 1 1 3 1 1
 5 2 1 3 1 1 4 5
 3 4 5 1 3 2 3 3
本次消除獲得積分數量:55
=================================開始第2步==================================
 3 3 2 2 3 3 2 4
 4 3 3 2 1 3 3 3
 3 1 3 3 4 1 4 2
 2 3 5 1 2 4 4 4
 4 2 2 3 4 2 1 4
 3 3 2 1 1 3 1 1
 5 2 1 3 1 1 4 5
 3 4 5 1 3 2 3 3

 3 3 2 2 3 3 2 4
 4 3 3 2 1 * * *
 3 1 3 3 4 1 4 2
 2 3 5 1 2 * * *
 4 2 2 3 4 2 1 4
 3 3 2 1 1 3 1 1
 5 2 1 3 1 1 4 5
 3 4 5 1 3 2 3 3

 3 3 2 2 3  
 4 3 3 2 1  
 3 1 3 3 4 3 2 4
 2 3 5 1 2 1 4 2
 4 2 2 3 4 2 1 4
 3 3 2 1 1 3 1 1
 5 2 1 3 1 1 4 5
 3 4 5 1 3 2 3 3
本次消除獲得積分數量:20
=================================開始第3步==================================
 3 3 2 2 3 4 1 3
 4 3 3 2 1 4 2 5
 3 1 3 3 4 3 2 4
 2 3 5 1 2 1 4 2
 4 2 2 3 4 2 1 4
 3 3 2 1 1 3 1 1
 5 2 1 3 1 1 4 5
 3 4 5 1 3 2 3 3
=================================消除完畢!==================================
共獲得積分數量:75

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

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

標簽:臨夏 黑河 中衛(wèi) 阜陽 駐馬店 延邊 南昌 欽州

巨人網絡通訊聲明:本文標題《利用PHP實現開心消消樂的算法示例》,本文關鍵詞  利用,PHP,實現,開心,消消,;如發(fā)現本文內容存在版權問題,煩請?zhí)峁┫嚓P信息告之我們,我們將及時溝通與處理。本站內容系統(tǒng)采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《利用PHP實現開心消消樂的算法示例》相關的同類信息!
  • 本頁收集關于利用PHP實現開心消消樂的算法示例的相關信息資訊供網民參考!
  • 推薦文章
    噼里啪啦国语在线观看免费版高清版| 精品成人国产在线观看男人呻吟| 大黄网站在线观看| www.操.com| 午夜国产在线观看| 男插女免费视频| 亚洲乱码在线观看| www.8ⅹ8ⅹ羞羞漫画在线看| 国产高清在线精品一区二区三区| 韩国一区二区三区视频| 视频一区在线观看| 九九久久国产| 影音先锋成人在线电影| 亚洲va在线va天堂va偷拍| 久久午夜夜伦鲁鲁一区二区| 蜜桃传媒av| 一本色道久久综合亚洲| 国产欧美一区二区三区在线看| 亚洲自拍另类| 久青青在线观看视频国产| 黄色一级大片在线免费看国产| 久久精品一区二区不卡| 性欧美超级视频| 亚洲在线偷拍自拍| 91久久久精品| 全部免费毛片在线播放网站| 91欧美极品| 给我免费观看片在线电影的| 国产精品igao视频网网址不卡日韩| 国产三级黄色片| 色中文字幕在线| 狠狠干一区二区| 丝瓜av网站精品一区二区| 97人人模人人爽人人喊38tv| 亚洲国产精品va在线| wwwxxxx欧美| 久艹视频在线观看| 久久尤物电影视频在线观看| 男男gay免费网站| 农村末发育av片一区二区| 波多野结衣视频在线看| 中文乱码免费一区二区| 麻豆av观看| 精品国产91洋老外米糕| 韩国久久久久久| 男人添女人下部高潮视频在线观看| 亚洲人成人无码网www国产| 国产乱淫av片杨贵妃| 四虎电影院在线观看| 欧美亚洲在线观看| 免费看黄色网址| 亚洲午夜无码av毛片久久| 松下纱荣子在线观看| 超碰个人在线| 九义人在线观看完整免费版电视剧| 亚洲少妇一区二区| 成人免费不卡视频| 日韩中文字幕二区| 久久丝袜美腿综合| 91免费观看| 懂色av蜜臀av粉嫩av分享吧| 色呦呦网站一区| 国产伦精品一区二区三区视频孕妇| 欧美深深色噜噜狠狠yyy| 午夜啪啪小视频| 可以在线观看的av| 校园春色亚洲| 欧美13一16娇小xxxx| 欧美精品免费看| 国内自拍视频在线看免费观看| 1000精品久久久久久久久| 国产福利视频在线观看| 综合欧美亚洲| 亚洲欧美综合图区| 久久精品一区二区三| 欧美变态另类刺激| 2023国产一二三区日本精品2022| 欧美性69xxxx肥| 欧美日韩一区二区在线视频| 欧美日韩在线不卡| 色一情一乱一乱一区91av| 亚洲尤物影院| 国产二区三区四区| 国产网站欧美日韩免费精品在线观看| 麻豆视频一区| 国产美女娇喘av呻吟久久| 欧美激情黑白配| 另类av一区二区| 国产美女无遮挡网站| 国产精久久久| 色妞色视频一区二区三区四区| 国模吧精品人体gogo| 麻豆传媒在线完整视频| 亚洲一区二区观看| 久久黄色级2电影| 午夜精品网站| 在线看视频不卡| 欧美日韩精品在线一区二区| www.日韩在线观看| 欧美黑人一区| 欧美超强性xxxxx| 中文字幕av在线免费观看| 精品一区二区三区日韩| 麻豆精品国产传媒av| 中文字幕乱码一区二区免费| 国产精品热久久久久夜色精品三区| 黄色成人av网| 一区二区三区视频免费观看| 另类高清dbsm日本tvav| 任你操视频在线观看| 午夜视频在线观看一区二区| 色视频一区二区| 日本免费一区二区六区| av中文资源在线资源免费观看| 中文字幕乱码一区二区三区| 青青草国产免费一区二区下载| 亚洲精品自拍第一页| 白丝美女让我捅| 66视频精品| 国产精品1000部啪视频| 久久国产精品网站| 91女人18毛片水多国产| 欧美成人tv| 在线播放欧美女士性生活| 亚洲欧美自拍偷拍| 欧美日韩国产丝袜美女| 国产成人精品综合久久久久99| 成人在线一区二区| 黄网在线观看| 亚洲一区三区视频在线观看| 亚洲精品免费观看| 日本一道本视频| 97影院在线午夜| 中文字幕久久午夜不卡| 免费观看在线色综合| 久久免费少妇高潮久久精品99| 国产精品国码视频| 91av一区二区三区| 国产一区二区成人久久免费影院| 国产69久久| 久久久久久久久久久久91| 日本中文字幕一区二区视频| 日韩电影免费在线观看网站| 91免费的视频在线播放| 中文字幕在线亚洲| 欧美日韩第一页| 国产一区二区自拍视频| 永久av免费网站| 亚洲一区二区欧美| 中文字幕av不卡| 波多野结衣av在线播放| 久久精品国产精品| 香港欧美日韩三级黄色一级电影网站| 亚洲高清精品中出| 欧美精品久久久久久久多人混战| 国产精品久久久久aaaa| 亚洲精品乱码久久久久久金桔影视| 少妇性l交大片7724com| 丝袜美女在线观看| 欧美大片在线看免费观看| 在线成人视屏| 欧美色图天堂网| 欧美性极品xxxx娇小| 卡一精品卡二卡三网站乱码| 日韩大胆成人| 末成年女av片一区二区下载| 国产精品久久777777| 麻豆蜜桃在线观看| 欧美日韩国产一中文字不卡| 久久综合九色综合网站| 欧美亚洲午夜视频在线观看| 国内黄色精品| 蜜桃视频中文字幕| 国产亚洲欧美视频| 成人欧美一区二区三区在线观看| 国产一区91精品张津瑜| 午夜视频在线观看一区二区三区| 欧美性videos高清精品| 久久97人妻无码一区二区三区| 桃乃木香奈和黑人aⅴ在线播放| 另类视频在线观看| 国产成人午夜视频网址| 国产三级三级在线观看| 国产免费a∨片在线观看不卡| 欧洲在线视频一区| 原纱央莉成人av片| 日日噜噜噜夜夜爽亚洲精品| 无码人妻av免费一区二区三区| 欧美日韩精品一区二区三区蜜桃| 国产精品1区在线| 日韩av中文字幕在线播放| 精品国产黄a∨片高清在线| 一区二区久久精品66国产精品| 丰满人妻老熟妇伦人精品| 亚洲成人av一区二区| 欧美激情视频在线免费观看 欧美视频免费一| 亚洲裸体俱乐部裸体舞表演av| 欧美刺激脚交jootjob| 国产7777777| 亚洲精品第1页| 精品视频91| 天天色综合成人网| 污版网站在线观看| 大胆人体色综合| 欧美h视频在线观看| av在线播放资源| 国产成人午夜片在线观看高清观看| caoporen国产精品| a级女人18毛片| 久久国产高清| 日韩黄色小视频| 日韩欧美亚洲国产一区| 久久午夜激情| 一个色在线视频| 天天看天天摸天天操| 日韩欧美精品电影| 99在线精品观看| 偷偷看偷偷操| 激情久久av| 成人涩涩免费视频| 6080国产精品一区二区| 97成人超碰| 美女视频免费观看网站在线| 欧美日韩一区二区三区四区不卡| 亚洲精品免费在线观看| 欧美一级大片免费看| 日韩中文综合网| 天天躁日日躁狠狠躁免费麻豆| 蜜臀av国内免费精品久久久夜夜| 成人av在线资源网| 国产精品一区二区在线观看网站| 国产精品18毛片一区二区| 国产日韩欧美在线视频观看| 亚洲黄色在线观看| 国产精品一卡二卡| 国产毛片av在线| 91视频精品| 羞羞在线视频| 日韩欧美中文字幕视频| 欧美精品一区免费| 欧美gvvideo网站| 色偷偷色偷偷色偷偷在线视频| 欧美国产丝袜视频| 中文字幕久热精品在线视频| 麻豆网在线观看| 97在线视频免费看| 欧美日韩国产首页| 日日干夜夜骑| 国产视频xxx| 蜜桃传媒九九九| 亚洲精品第一国产综合精品| 一区二区三区精品| 国产很黄免费观看久久| 国产亚洲精久久久久久无码77777| 国产亚洲美女精品久久久| 亚洲国产欧美国产综合一区| 暧暧视频免费| 中文幕av一区二区三区佐山爱| 国产美女av一区二区三区| 清纯唯美一区二区三区| 在线看片线路1| 亚洲一区免费在线观看| eeuss草民免费| 欧美精品首页| 亚洲人午夜精品免费| 国产精品毛片无码| 电影av在线| 亚洲一级二级片| 国产精品乱战久久久| 91色琪琪电影亚洲精品久久| 天天综合色天天综合色h| 国产精选一区二区| 九九精品视频在线| 日韩欧美在线视频日韩欧美在线视频| 亚洲精品无amm毛片| 成人免费观看av| 91av亚洲| 久久大香伊蕉在人线观看热2| 国产一二三四视频| youjizz.com国产| 青青草精品视频在线观看| 草莓福利社区在线| 欧美丰满少妇xxxxx| 波多野结衣有码| 最新高清无码专区| 欧美婷婷六月丁香综合色| 中文天堂最新版本在线观看| 国产一区二区三区香蕉| 超碰caoprom| 美女av免费在线观看| 国产成人一区二区精品非洲| 欧美一级日韩一级| 日韩在线观看成人| 久久精品人人做人人综合| 欧美日韩加勒比精品一区| 国产精品日韩精品欧美精品| 欧美1级片网站| 色偷偷网站视频| 国产成人午夜视频网址| 伊人22222| 欧美色网站导航| 亚洲国产岛国毛片在线| 国产成人av一区二区三区在线| 欧美亚视频在线中文字幕免费| 久久狠狠亚洲综合| 久久久精品91| 成人黄色免费网站| 狠狠色综合欧美激情| 国产一级黄色录像| 异国色恋浪漫潭| 久久一二三四| 亚洲理论电影片| 国产精品视频你懂的| 日韩欧美一区二区三区久久婷婷| 女囚岛在线观看| 日韩中文字幕91| 美女扒开腿让男人桶爽久久软| 99国产一区二区三精品乱码| 亚洲熟妇av乱码在线观看| 久久免费少妇高潮久久精品99| 在线观看一区二区视频| 成人激情在线| 欧美日韩精品在线播放| 一区二区高清视频在线观看| 国产老妇伦国产熟女老妇视频| yy6080久久伦理一区二区| 永久免费精品视频网站| 91日韩免费|