掃雷--生成雷陣圖
// 埋雷 一維陣列表示 function lei($m, $n, $k){ $arr = array();// 雷陣 該位置是否有雷1有0無 $arr_lei_num = array(); // 該位置周邊雷的個數 $total = $total2 = $m*$n; for($i=0; $i<$total; $i++){ $arr[$i]=0; if( $k>0 && ($total2 <= $k || mt_rand(0,$total2) < $k)){ $arr[$i]=1; $k--; } $total2--; if(empty($arr[$i])){ continue; } foreach(array($i+1, $i-1, $i+$n,$i+$n-1,$i+$n+1,$i-$n,$i-$n+1,$i-$n-1) as $h){ $abs = abs($i%$m - $h%$n); if($h>=0 && $h<$total && $abs<=1){ // 邊界檢查 if(!isset($arr_lei_num[$h])){ $arr_lei_num[$h] = 0; } $arr_lei_num[$h]++; } } } return array('lei'=>$arr, 'num'=>$arr_lei_num); }