用PHP做了个扫雷的游戏,可以在这里看一下效果:
[url]http://240420643.ekedns.com/mine.php[/url]
源代码如下:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>扫雷</title>
</head>
<body>
<center><h2>扫雷<h2>(点开的数字表示周围8个格子中有几个地雷)</center>
<?
if($_POST['submit']=="")
{
$nummine=4;
$rowsize=5;
$colsize=5;
$gernerer=1;
$reste=$rowsize*$colsize-1;
}
else
{
$nummine=intval($_POST['nummine']);
$rowsize=intval($_POST['rowsize']);
$colsize=intval($_POST['colsize']);
$gernerer=intval($_POST['gernerer']);
if(!$_POST['reste'])
$reste=$rowsize*$colsize-1;
else
$reste=$_POST['reste'];
}
if($gernerer==1)
{
srand((double)microtime()*100000000);
$time_start=time();
if(($rowsize<=1)||($colsize<=1)||($nummine==0))
{
echo "<p><br><font size=-1 color=red>您的输入有误</font>";
exit;
}
if($nummine>$rowsize*$colsize)
{
echo "<p><br><font>地雷数太多!!</font>";
exit;
}
for($row=1;$row<=$rowsize;$row++)
{
for($col=1;$col<=$colsize;$col++)
{
$mine[$row][$col]="0";
$decouv[$row][$col]="0";
}
}
$index=0;
while($index<$nummine)
{
$row=rand(1,$rowsize);
$col=rand(1,$colsize);
if($mine[$row][$col]=="0")
{
$mine[$row][$col]="1";
$index++;
}
}
}
else
{
$perdu=0;
for($row=1;$row<=$rowsize;$row++)
{
for($col=1;$col<=$colsize;$col++)
{
$temp="mine".($row*($colsize+1)+$col);
$$temp=$_POST["$temp"];
$mine[$row][$col]=$$temp;
$temp="decouv".($row*($colsize+1)+$col);
$$temp=$_POST["$temp"];
$decouv[$row][$col]=$$temp;
$temp="submit".($row*($colsize+1)+$col);
$$temp=$_POST["$temp"];
if($$temp=="ok")
{
if($mine[$row][$col]=="0")
{
$decouv[$row][$col]="1";
}
else
{
$perdu=1;
}
}
}
}
if($perdu==1)
{
echo "<h2><font color=red>你输了!!</font></h2>";
for($i=1;$i<=$rowsize;$i++)
{
for($j=1;$j<=$colsize;$j++)
{
$decouv[$i][$j]="1";
}
}
}
if(($reste==$nummine)&&($perdu!=1))
{
echo "<h2>你赢了!!</h2>";
$time_stop=time();
$time=$time_stop-$time_start;
echo "<p><font size=1><i>你的分数:$time</i></font>";
for($i=1;$i<=$rowsize;$i++)
{
for($j=1;$j<=$colsize;$j++)
{
$decouv[$i][$j]="1";
}
}
}
$reste=$reste-1;
}
?>
<form method="post" action="mine.php">
<input type="hidden" name="time_start" value="<? echo $time_start;?>">
<input type="hidden" name="nummine" value="<? echo $nummine;?>">
<input type="hidden" name="rowsize" value="<? echo $rowsize;?>">
<input type="hidden" name="colsize" value="<? echo $colsize;?>">
<input type="hidden" name="gernerer" value="0">
<input type="hidden" name="reste" value="<? echo $reste;?>">
<p>
<table border="1" align="center">
<?
for($row=1;$row<=$rowsize;$row++)
{
echo "<tr>";
for($col=1;$col<=$colsize;$col++)
{
$nb=0;
for($i=-1;$i<=1;$i++)
{
for($j=-1;$j<=1;$j++)
{
if($mine[$row+$i][$col+$j]=="1")
$nb++;
}
}
echo "<td align=center valign=middle width=20 height=20>";
if($decouv[$row][$col]=="1")
{
if($nb==0)
{
echo "0";
}
else
{
if($mine[$row][$col]=="1")
echo "<font color=red>*</font>";
else
echo "$nb";
}
}
else
{
echo "<input type=submit name=submit".($row*($colsize+1)+$col)." value=ok>";
}
echo "<input type=hidden name=submit value=开始>";
echo "<input type=hidden name=mine".($row*($colsize+1)+$col)." value=".$mine[$row][$col].">";
echo "<input type=hidden name=decouv".($row*($colsize+1)+$col)." value=".$decouv[$row][$col].">";
echo "</td>";
}
echo "</tr>";
}
echo "</table>";
echo "</form>";
?>
<form method="post" action="mine.php">
行数:<input type="text" name="rowsize" value="5" size="5"><br>
列数:<input type="text" name="colsize" value="5" size="5"><br>
地雷数:<input type="text" name="nummine" value="4" size="5">
<p>
<input type="submit" name="submit" value="开始">
<input type="hidden" name="gernerer" value="1">
</form>
</body>
</html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>扫雷</title>
</head>
<body>
<center><h2>扫雷<h2>(点开的数字表示周围8个格子中有几个地雷)</center>
<?
if($_POST['submit']=="")
{
$nummine=4;
$rowsize=5;
$colsize=5;
$gernerer=1;
$reste=$rowsize*$colsize-1;
}
else
{
$nummine=intval($_POST['nummine']);
$rowsize=intval($_POST['rowsize']);
$colsize=intval($_POST['colsize']);
$gernerer=intval($_POST['gernerer']);
if(!$_POST['reste'])
$reste=$rowsize*$colsize-1;
else
$reste=$_POST['reste'];
}
if($gernerer==1)
{
srand((double)microtime()*100000000);
$time_start=time();
if(($rowsize<=1)||($colsize<=1)||($nummine==0))
{
echo "<p><br><font size=-1 color=red>您的输入有误</font>";
exit;
}
if($nummine>$rowsize*$colsize)
{
echo "<p><br><font>地雷数太多!!</font>";
exit;
}
for($row=1;$row<=$rowsize;$row++)
{
for($col=1;$col<=$colsize;$col++)
{
$mine[$row][$col]="0";
$decouv[$row][$col]="0";
}
}
$index=0;
while($index<$nummine)
{
$row=rand(1,$rowsize);
$col=rand(1,$colsize);
if($mine[$row][$col]=="0")
{
$mine[$row][$col]="1";
$index++;
}
}
}
else
{
$perdu=0;
for($row=1;$row<=$rowsize;$row++)
{
for($col=1;$col<=$colsize;$col++)
{
$temp="mine".($row*($colsize+1)+$col);
$$temp=$_POST["$temp"];
$mine[$row][$col]=$$temp;
$temp="decouv".($row*($colsize+1)+$col);
$$temp=$_POST["$temp"];
$decouv[$row][$col]=$$temp;
$temp="submit".($row*($colsize+1)+$col);
$$temp=$_POST["$temp"];
if($$temp=="ok")
{
if($mine[$row][$col]=="0")
{
$decouv[$row][$col]="1";
}
else
{
$perdu=1;
}
}
}
}
if($perdu==1)
{
echo "<h2><font color=red>你输了!!</font></h2>";
for($i=1;$i<=$rowsize;$i++)
{
for($j=1;$j<=$colsize;$j++)
{
$decouv[$i][$j]="1";
}
}
}
if(($reste==$nummine)&&($perdu!=1))
{
echo "<h2>你赢了!!</h2>";
$time_stop=time();
$time=$time_stop-$time_start;
echo "<p><font size=1><i>你的分数:$time</i></font>";
for($i=1;$i<=$rowsize;$i++)
{
for($j=1;$j<=$colsize;$j++)
{
$decouv[$i][$j]="1";
}
}
}
$reste=$reste-1;
}
?>
<form method="post" action="mine.php">
<input type="hidden" name="time_start" value="<? echo $time_start;?>">
<input type="hidden" name="nummine" value="<? echo $nummine;?>">
<input type="hidden" name="rowsize" value="<? echo $rowsize;?>">
<input type="hidden" name="colsize" value="<? echo $colsize;?>">
<input type="hidden" name="gernerer" value="0">
<input type="hidden" name="reste" value="<? echo $reste;?>">
<p>
<table border="1" align="center">
<?
for($row=1;$row<=$rowsize;$row++)
{
echo "<tr>";
for($col=1;$col<=$colsize;$col++)
{
$nb=0;
for($i=-1;$i<=1;$i++)
{
for($j=-1;$j<=1;$j++)
{
if($mine[$row+$i][$col+$j]=="1")
$nb++;
}
}
echo "<td align=center valign=middle width=20 height=20>";
if($decouv[$row][$col]=="1")
{
if($nb==0)
{
echo "0";
}
else
{
if($mine[$row][$col]=="1")
echo "<font color=red>*</font>";
else
echo "$nb";
}
}
else
{
echo "<input type=submit name=submit".($row*($colsize+1)+$col)." value=ok>";
}
echo "<input type=hidden name=submit value=开始>";
echo "<input type=hidden name=mine".($row*($colsize+1)+$col)." value=".$mine[$row][$col].">";
echo "<input type=hidden name=decouv".($row*($colsize+1)+$col)." value=".$decouv[$row][$col].">";
echo "</td>";
}
echo "</tr>";
}
echo "</table>";
echo "</form>";
?>
<form method="post" action="mine.php">
行数:<input type="text" name="rowsize" value="5" size="5"><br>
列数:<input type="text" name="colsize" value="5" size="5"><br>
地雷数:<input type="text" name="nummine" value="4" size="5">
<p>
<input type="submit" name="submit" value="开始">
<input type="hidden" name="gernerer" value="1">
</form>
</body>
</html>
转载于:https://blog.51cto.com/240420643/107851