Heim > php教程 > php手册 > Hauptteil

用php做扫雷游戏

WBOY
Freigeben: 2016-06-06 19:55:23
Original
1838 Leute haben es durchsucht

php其实不适合做游戏,但是简单的游戏还是可以实现的,下面用php 实现简单的扫雷游戏,包含注释,代码只有167行 ?php$init = $_POST[init];//game restart$clickvalue = $_POST[clickvalue];//minesweeping$checkflag = 0;//Victory or defeat$click_count =

php其实不适合做游戏,但是简单的游戏还是可以实现的,下面用php 实现简单的扫雷游戏,包含注释,代码只有167行

<?php $init = $_POST["init"];//game restart
$clickvalue = $_POST["clickvalue"];//minesweeping
$checkflag = 0;//Victory or defeat
$click_count = 0;//clicks count
if($init == null && $clickvalue == null){//initialization
	$_POST = array();//set POST with a array
	$_POST["rows"] = 9;//set rows
	$_POST["cols"] = 9;//set cols
	$_POST["num"] = 10;//set num
	$_POST["timeshow"] = "00:00"; //set starttime
	$init = true;//set initialization
}
$rows = $_POST["rows"];//get rows
$cols = $_POST["cols"];//get cols
$num = $_POST["num"];//get num
$starttime = $_POST["starttime"];//get starttime
if($init){// is initialization
	$timeshow = "00:00";//set starttime
	$data = array();//data initialization
	for($i=0;$i<$rows;$i++){//all the rows
		for($j=0;$j<$cols;$j++){//all the cols
			$data["data".$i."_".$j] = 0;//set mine with null
			$data["open".$i."_".$j] = 0;//set node with close
		}
	}
	$i=0;//reset the index,and set the mines(Random setting)
	while($i < $num){//number of mine
		$r = rand(0,$rows - 1);//row's index
		$c = rand(0,$cols - 1);//col's index
		if($data["data".$r."_".$c] == 0){//if not a mine
			$data["data".$r."_".$c] = 100;//set the node with a mine
			$i++;
		}
	}
	for($i=0;$i<$rows;$i++){//all the rows
		for($j=0;$j<$cols;$j++){//all the cols
			if($data["data".$i."_".$j] == 100)continue;//is not a mine , set number of adjacent mines 
			$cnt = 0;
			if($i - 1 >= 0 && $j - 1 >= 0 && $data["data".($i - 1)."_".($j - 1)] == 100)$cnt++;//upper left
			if($i - 1 >= 0 && $data["data".($i - 1)."_".$j] == 100)$cnt++;//left
			if($i - 1 >= 0 && $j + 1 = 0 && $data["data".$i."_".($j - 1)] == 100)$cnt++;//upper
			if($j + 1 = 0 && $data["data".($i + 1)."_".($j - 1)] == 100)$cnt++;//upper right
			if($i + 1 9?$min:"0".$min).":".($sec>9?$sec:"0".$sec);
}else{
	$timeshow = "00:00";//if game is stop , time stop
}
function openNode($i,$j){//set nodes to open,if it is can open
	global $rows;//get the rows
	global $cols;//get the cols
	global $data;//get the data
	if($i = $rows || $j = $cols || $data["open".$i."_".$j])return;//it is not a node,or it has been opened
	$data["open".$i."_".$j] = 1;//open the node
	if($data["data".$i."_".$j] > 0)return;//need to continue?
	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);
}
?>


<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>minesweeper</title>


Nach dem Login kopieren
rows:
cols
num:
"; else if($checkflag == 2)echo "game over!
"; ?>
" value=""> " value=""> ')" style="width:20px;height:20px;">



演示地址

http://www.fsanguo.comoj.com/public/minesweeper/index.php

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Empfehlungen
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage