php自学笔记三

来源:互联网 发布:qtassist是什么软件 编辑:程序博客网 时间:2024/06/10 19:16

@whqet 好久没有写博客,这段时间我一直在用php做扫雷,首先说我要学php之前在新浪博客写,第三篇才到这里学,我不会php不会javascript,就会点html+css,所以现在自学中,有点累。但也在不断努力中希望。说道学习,与其说学习,不如说看着w3cschool的php资料,不断的在用案例实践,看完php的基础内容后,我也想到一些要做的东西,比如九九乘法表,比如用表单做计算器,这些都是简单的东西,循环,然后echo,后者是$_POST传值相加。但是第三个例子是想做一个扫雷。希望给自己一个挑战。

    首先声明我没有看任何关于扫雷的资料,但是我在做的时候游戏需要的函数还是从网络来的,因为我想做好了,在对比那些大神们的思路,在来反思我自己的思路。在有点点提高。好吧,个人想法而已,轻拍,虽然没人看。

   首先是思路。1.布局,用php循环生成按钮。2.生成雷。3生成数字。4。点击按钮显示并让按钮不可点击,点到雷停止游戏。5.点到空格时候展开。

我承认第五个是最难的。甚至是卡了我半天的时间,直到现在也没有做出来,首先看看我的想法是怎么样的。下图是我的界面图

我是这么想的点到空格,那么周边的八个必须让他变成已选状态。即disabled的状态变成true。如果周边还有空格的,我让周边的空格 的周边八个也为已选;

以为想起来比较复杂,我是画了下面的流程图。


思路上应该是没有错。但是就是没有做出来,希望庆哥给点意见。



<!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>
.button {
margin:0;
padding:0;
width:30px;
height:30px;
padding:5px 0;
}
</style>
</head>
<body>
<!-------------- --- 设置选项--------------------->
<form action="cs_sl.php" method="post">
设置行数目:
<input type="text" name="num_hang" value="<? if($_POST[num_hang]=="") {$_POST[num_hang]=9;} echo $_POST[num_hang];?>"/>
设置列数目:
<input type="text" name="num_lie"  value="<? if($_POST[num_lie]=="") {$_POST[num_lie]=9;} echo $_POST[num_lie];?>"/>
设置雷数量:
<input type="text" name="num_lei"  value="<? if($_POST[num_lei]=="") {$_POST[num_lei]=19;} echo  $_POST[num_lei];?>"/>
<input type="submit" value="确定"/>
</br>
<form>
  <!-----------------------设置行数与雷数------------------>
  <? 


if($_POST[num_hang]<9 or $_POST[num_lie]<9 or $_POST[num_lei]<9)
{
echo "行列高不能有一个小于9";
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]="雷";//给某个数值赋值雷
}
 

echo "</br>";

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++)
{
echo $lei[$j][$k]."";
if($lei[$j][$k]=="雷")
{
$i++;
}
}
echo "</br>";
}
echo $i."</br>";


?>
<!--------------------------循环生成按钮-------------------------->
 <?
$a_h=1;
$a_z=1;
for($a_h=1;$a_h<=$_POST[num_hang];$a_h++)
{
   for($a_z=1;$a_z<=$_POST[num_lie];$a_z++)
   {
  $a_xx=$a_h."_".$a_z;
  echo "<input type='button' class='button' id='b".$a_h."_".$a_z."' name='".$lei[$a_h][$a_z]."' onclick='myfunction(this)' />";
  }
      echo "</br>";
 //myfunction(".$a_h.",".$a_z.",this,".$lei[$a_h][$a_z].")
//  value='".$lei[$a_h][$a_z]."'
}
?>
</form>
<script>
function  myfunction(obj){
var a=obj.id;
var b=a.indexOf("_");
var c=a.substr(1,b-1);
var d=a.substr(b+1,a.length);



if(obj.name=="雷")
{   
obj.value=obj.name;
alert("踩到雷了!游戏结束!");
obj.disabled=true;

}
else if(obj.name=="0 ")
{
obj.value=" ";
obj.disabled=true;
function0(c,d,obj);
}
else
{
obj.value=obj.name;
obj.disabled=true;
  }  
}
 
function  function0(a2,b2,obj2)
{

var  flag =0;
//////////////////////////////////////////////////////////////////////////////////////////////
if(document.getElementById("b"+(a2-1)+"_"+(b2-1)).disabled!=true)//左上角
{
fun0_id="b"+(a2-1)+"_"+(b2-1);
document.getElementById(fun0_id).disabled=true;
kg_zbxs(fun0_id);
}
else{
flag++;
}


    if(document.getElementById("b"+(a2-1)+"_"+(b2)).disabled!=true)//正上
{
fun0_id="b"+(a2-1)+"_"+(b2);
document.getElementById(fun0_id).disabled=true;
kg_zbxs(fun0_id);

}
else{
flag++;
}


if(document.getElementById("b"+(a2-1)+"_"+(Number(b2)+1)).disabled!=true)//右上角
{
   fun0_id="b"+(a2-1)+"_"+(Number(b2)+1);
document.getElementById(fun0_id).disabled=true;
kg_zbxs(fun0_id);
}else{
flag++;
}



////////////////////////////////////////////////////////////////////////////////////////////////
if(document.getElementById("b"+(Number(a2))+"_"+(Number(b2)-1)).disabled!=true)//左边
{
fun0_id="b"+(Number(a2))+"_"+(Number(b2)-1);
document.getElementById(fun0_id).disabled=true;
kg_zbxs(fun0_id);
}else{
flag++;
}


if(document.getElementById("b"+(Number(a2))+"_"+(Number(b2)+1)).disabled!=true)//右边
{
fun0_id="b"+(Number(a2))+"_"+(Number(b2)+1);
document.getElementById(fun0_id).disabled=true;
kg_zbxs(fun0_id);
}else{
flag++;
}

//////////////////////////////////////////////////////////////////////////////////////////////
if(document.getElementById("b"+(Number(a2)+1)+"_"+(Number(b2)-1)).disabled!=true)//左下角
{
fun0_id="b"+(Number(a2)+1)+"_"+(Number(b2)-1);
document.getElementById(fun0_id).disabled=true;
kg_zbxs(fun0_id);
}else{
flag++;
}

if(document.getElementById("b"+(Number(a2)+1)+"_"+(Number(b2))).disabled!=true)//正下
{
fun0_id="b"+(Number(a2)+1)+"_"+(Number(b2));
document.getElementById(fun0_id).disabled=true;
kg_zbxs(fun0_id);
}else{
flag++;
}

if(document.getElementById("b"+(Number(a2)+1)+"_"+(Number(b2)+1)).disabled!=true)//右下角
{
fun0_id="b"+(Number(a2)+1)+"_"+(Number(b2)+1);
document.getElementById(fun0_id).disabled=true;
kg_zbxs(fun0_id);
}else{
flag++;
}


if(flag==8)
{
return 0;
}
}


function kg_zbxs(kg_id)//空格周边显示
{
if(document.getElementById(kg_id).name=="0 ")
document.getElementById(kg_id).value=" ";
else
document.getElementById(kg_id).value=document.getElementById(kg_id).name;
}
</script>
</body>
</html>

上面是源代码,php文件的现在我实现的效果是这样子的。我的操作是这样子的,关于没展开的全的问题是,我没有进一步完善下去,但是也看到最上面点开的空格没有展开,原因是这样子的,我的点开空格的遍历顺序是从上到下,从左到右,最上面的左上角是空所以就停止了,然后就不展开了,这个就是一个我不知道为什么这样了,按我的思路他应该展开是没有问题的,可是为什么呢?继续研究了。



0 0
原创粉丝点击