关于扫雷上一篇也写了思路与想法,今天我有花了一天的时间把剩下来的内容完成了,也完成相应的效果,虽然还存在比较多的bug但是基本的游戏功能还是实现了的。
作为第一次完全自己设计,编程,美化的界面。也没有借鉴他人的思路完整做下来,这种成就感还是非常强烈,虽然我现在只学了php一个星期,但是之前有点html的基础还算行,也感谢whqet对我的教导。以后我会对这个游戏更加优化。做的更加有模有样。之后我也会继续学习php,学习javascript,学习html。
下图是扫雷:
下文是扫雷代码:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
<style>
.srk{
width:60px;
text-align:center}
#szjm
{
width:800px;
height:30px;}
#cxks,#szjm,#sljm{
margin:0 auto;
text-align:center;
}
#cxks{
}
#sljm{
width:700px;
}
.button,.button_lei,.button_shuzi,.button_kong,.button_lei2
{/**正常**/
margin:0;
width:27px;
height:27px;
padding:5px 0;
/*font-weight:blod;*/
}
.button_lei{/**雷**/
background:url(lei.jpg);
text-indent:-99999px;
color:#F00;
}
.button_lei2{/**雷**/
background:url(lei2.jpg);
text-indent:-99999px;
color:#F00;
}
.button_shuzi {/**数字**/
color:#09F;
}
.button_kong {/**空格**/
}
</style>
</head>
<body>
<!-------------- --- 设置选项--------------------->
<div id="szjm">
<form action="cs_sl.php" method="post">
设置行数目:
<input type="text" id="num_hang" name="num_hang" class="srk" value="<? if($_POST[num_hang]=="") {$_POST[num_hang]=9;} echo $_POST[num_hang];?>"/>
设置列数目:
<input type="text" id="num_lie" name="num_lie" class="srk" value="<? if($_POST[num_lie]=="") {$_POST[num_lie]=9;} echo $_POST[num_lie];?>"/>
设置雷数量:
<input type="text" id="num_lei" name="num_lei" class="srk" value="<? if($_POST[num_lei]=="") {$_POST[num_lei]=10;} echo $_POST[num_lei];?>"/>
<input type="submit" value="确定"/>
</form>
</div>
<!-----------------------设置行数与雷数------------------>
<?
//输入框雷数,行数,列数限定
if($_POST[num_hang]<9 or $_POST[num_lie]<9 or $_POST[num_lei]<10)
{
if($_POST[num_lei]<10)
{
echo "alert(雷不能小于10个!)";
}
if($_POST[num_hang]<9)
{
echo "行不能小于9!";
}
if($_POST[num_lie]<9)
{
echo "列不能小于9!";
}
exit;
}
if($_POST[num_hang]>24 or $_POST[num_lie]>24 or $_POST[num_lei]>100)
{
if($_POST[num_lei]>100)
{
echo "雷不能大于99个!";
}
if($_POST[num_hang]>24)
{
echo "行不能大于23!";
}
if($_POST[num_lie]>24)
{
echo "列不能大于23!";
}
exit;
}
if($_POST[num_hang]*$_POST[num_lie]<$_POST[num_lei])
{
echo "雷数过多!";
exit;
}
?>
<!----------------------随机产生雷-------------------->
<?
for($i=0;$i<=$_POST[num_hang]+1;$i++)
for($j=0;$j<=$_POST[num_lie]+1;$j++)
{
$lei[$i][$j]="空";//给先给数组每个都赋值为空
}
for($i=1;$i<=$_POST[num_lei];$i++)
{
$num_rand1=rand(1,$_POST[num_hang]);//随机值1
// echo $num_rand1;
$num_rand2=rand(1,$_POST[num_lie]);//随机值2
// echo $num_rand2." ";
if($lei[$num_rand1][$num_rand2]=="雷")//如果是该数值是雷重新随机一次
{
$i--;
}
else
{
$lei[$num_rand1][$num_rand2]="雷";//给某个数值赋值雷
}
}
for($j=1;$j<=$_POST[num_hang];$j++)
{
for($k=1;$k<=$_POST[num_lie];$k++)//判断某个空 旁边有多少个雷,赋予值
{$i=0;
if($lei[$j][$k]=="雷")
continue;
if($lei[$j-1][$k]=="雷")
$i++;
if($lei[$j-1][$k-1]=="雷")
$i++;
if($lei[$j][$k-1]=="雷")
$i++;
if($lei[$j+1][$k]=="雷")
$i++;
if($lei[$j+1][$k+1]=="雷")
$i++;
if($lei[$j][$k+1]=="雷")
$i++;
if($lei[$j-1][$k+1]=="雷")
$i++;
if($lei[$j+1][$k-1]=="雷")
$i++;
$lei[$j][$k]=$i." ";
}
}
/*************************测试数据**********************************
$i=0;
for($j=0;$j<=$_POST[num_hang]+1;$j++)
{
for($k=0;$k<=$_POST[num_lie]+1;$k++