本文實例講述了php實現的簡易掃雷遊戲。分享給大家供大家參考。具體如下:
-
-
$init = $_POST["init"];//遊戲重新啟動
- $clickvalue = $_POST["clickvalue"] ;//掃雷
- $checkflag = 0;//勝利或失敗
- $click_count = 0;//點擊次數
- if($init == null && $clickvalue == null){//初始化
- $_POST = array();//用陣列設定POST
- $_POST["rows"] = 9;//設定行
- $_POST["cols"] = 9;//設定cols
- $_POST["num"] = 10;//設定num
- $_POST["timeshow"] = "00:00"; //設定開始時間
- $init = true;//設定初始化
- }
- $rows = $_POST["rows"];//取得行
- $cols = $_POST["cols" ];//取得欄位
- $num = $_POST[ "num"];//取得num
- $starttime = $_POST["starttime"];//取得開始時間
- if($init) {// 是初始化
- $timeshow = "00: 00";//設定開始時間
- $data = array();//資料初始化
- for($i=0;$i for ($j=0;$j $data["data".$i."_ ".$j] = 0;//將我的節點設為null
- $data["open".$i."_".$j] = 0;//將節點設為close
- }
- }
- $i=0;//重設索引,並設定地雷(隨機設定)
- while($i $r = rand(0 ,$rows - 1);//行索引
- $c = rand(0,$cols - 1);//列索引
- if($data["data".$r."_". $c] == 0){//如果不是礦井
- $data["data".$r."_".$c] = 100;//設定有礦井的節點
- $i ;
- }
- }
- for($i =0;$i for($j=0;$j if($data[" data".$i."_".$j] == 100)continue;
- //不是地雷,設定相鄰的個數地雷
- $cnt = 0;
- if($i - 1 >= 0 && $j - 1 >= 0 && $data["data".($i - 1)."_".($j - 1)] == 100)$cnt ;//左上角
- if($i - 1 >= 0 && $data["data".($i - 1)."_".$j] == 100)$cnt ;//左
- if($i - 1 >= 0 && $j 1 if($j - 1 >= 0 && $data["data".$i."_".($j - 1)] == 100) $cnt ;//上
- if($j 1 if($i 1 = 0 && $data["data".($i 1)."_".($j - 1)] == 100)$ cnt ;//右上
- if($i 1 if($i 1 $data["data".$i."_".$ j] = $cnt;//設定數字
- }
- }
- }else{
- $ data = $_POST;//取得資料
- if($data["data".$ clickvalue] == 100){
- //檢查使用者點擊值
- $checkflag = 2;//如果點擊一個地雷,遊戲結束
- for($i=0;$i for($j=0;$j $data["open".$i."_".$j ] = 1;
- //設定所有節點開啟
- }
- }
- }else{
- $node =explode("_", $clickvalue);//取得點擊的節點
- openNode($node[0],$node[1]);//設定節點為open
- for($i=0;$i for($j=0;$j if($data["open".$i."_".$j] == 1)$click_count ;
- //取得opennode數量
- }
- }
- if($rows*$cols - $click_count == $num)$checkflag = 1;
- //如果所有節點都打開,則遊戲清除
- }
- }
- if($checkflag == 0 && $click_count == 1){
- //如果遊戲開始,則時間開始
- $starttime = date(" H:i:s");
- }
- if($starttime){//計算時間並顯示
- $now = date("H:i:s");
- $nowlist = explode(":",$now);
- $starttimelist =explode(":",$starttime);
- $time_count = $nowlist[0]*3600 $nowlist[1]*60 $nowlist[2 ] - ($starttimelist[0]*3600 $starttimelist[1]*60 $starttimelist[2]);
- $min = 樓層($time_count / 60);
- $sec = $time_count % 60;
- $timeshow = ($min>9?$min:"0".$min).":".($sec>9?$sec:"0".$sec);
- }else{
- $timeshow = "00:00";//如果遊戲停止,時間停止
- }
- function openNode($i,$j){//設定要開啟的節點,如果是則可以開啟
- global $rows;//取得行
- global $cols;//取得列
- global $data;//取得資料
- if($i = $rows || $j = $cols || $data ["open".$ i."_".$j])return;
- //不是節點,或已經被打開
- $data["open".$i."_" .$j] = 1;//打開節點
- if($data["data".$i."_".$j] > 0)return;//需要繼續嗎?
- openNode($i - 1,$j - 1);
- openNode($i - 1,$j);
- openNode($i - 1,$j 1);
- openNode( $i,$j - 1);
- openNode($i,$j 1);
- openNode($i 1,$j - 1);
- openNode($i 1,$j);
- openNode($i 1,$j 1);
- }
- ? >
-
-
-
>
-
掃雷遊戲
- 頭>
-
|