php开发的简易扫雷游戏

我觉得用PHP+JS可以设计出挺牛逼的二维网页游戏,当然网络型的网页游戏后台数据的交互可以使用java来做数据处理。

开发的简易扫雷游戏-扫雷游戏开发">

 

<?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 < $cols && $data["data".($i - 1)."_".($j + 1)] == 100)$cnt++;//lower left  

            if($j - 1 >= 0 && $data["data".$i."_".($j - 1)] == 100)$cnt++;//upper  

            if($j + 1 < $cols && $data["data".$i."_".($j + 1)] == 100)$cnt++;//lower  

            if($i + 1 < $rows && $j - 1 >= 0 && $data["data".($i + 1)."_".($j - 1)] == 100)$cnt++;//upper right  

            if($i + 1 < $rows && $data["data".($i + 1)."_".$j] == 100)$cnt++;//right  

            if($i + 1 < $rows && $j + 1 < $cols && $data["data".($i + 1)."_".($j + 1)] == 100)$cnt++;//lower right  

            $data["data".$i."_".$j] = $cnt;//set number  

        }  

    }  

}else{  

    $data = $_POST;//get data  

    if($data["data".$clickvalue] == 100){//check the value of users click  

        $checkflag = 2;//if click on a mine,gameover  

        for($i=0;$i<$rows;$i++){//all the rows  

            for($j=0;$j<$cols;$j++){//all the cols  

                $data["open".$i."_".$j] = 1;//set all nodes to open  

            }  

        }  

    }else{  

        $node = explode("_", $clickvalue);//get the node of click  

        openNode($node[0],$node[1]);//set nodes to open  

        for($i=0;$i<$rows;$i++){//all the rows  

            for($j=0;$j<$cols;$j++){//all the cols   

                if($data["open".$i."_".$j] == 1)$click_count++;//get the number of opennode   

            }  

        }  

        if($rows*$cols - $click_count == $num)$checkflag = 1;//if all the node is open,game clear   

    }  

}  

if($checkflag == 0 && $click_count == 1){//if game is start ,time start  

    $starttime = date("H:i:s");  

}  

if($starttime){//Computing time and display  

    $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 = floor($time_count / 60);  

    $sec = $time_count % 60;  

    $timeshow = ($min>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 < 0 $i >= $rows $j < 0 $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);  

}  

?>  

<html>  

<head>  

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

<title>扫雷游戏 php100.com</title>  

</head>  

<body>  

<form action="" method="post">  

<input type="hidden" name="starttime" value="<?php echo $starttime;?>"/>  

<input type="hidden" name="clickvalue"/>  

<table style="top:10px;left:0px;z-index:0;margin:10px auto" border="1px">  

<tr>  

<td width="100px" align="center">  

    <table width="100%" border="1px">  

        <tr><td>行数:</td><td><input type="text" name="rows" value="<?php echo $rows;?>" size="1"/></td></tr>  

        <tr><td>列数</td><td><input type="text" name="cols" value="<?php echo $cols;?>" size="1"/></td></tr>  

        <tr><td>雷数:</td><td><input type="text" name="num" value="<?php echo $num;?>" size="1"/></td></tr>  

        <tr><td colspan="2" align="center"><input type="submit" value="重新开始" name="init"/></td></tr>  

    </table>  

</td>  

<td width="50px" align="center"><font size="10px"><?php echo $checkflag < 2?"":"☹";?></font></td>  

<td width="100px" align="center">  

<?php   

    if($checkflag == 1)echo "恭喜,雷全部清掉了!<br />";  

    else if($checkflag == 2)echo "太挫了,又被雷炸死了<br />";  

?>  

    <input type="text" name="timeshow" value="<?php echo $timeshow;?>" size="4" readonly >  

</td>  

</tr>  

</table>  

<table style="top:155px;left:0px;z-index:0;margin:10px auto" border="1px">  

<?php for($i=0;$i<$rows;$i++){ ?>  

    <tr>  

    <?php for($j=0;$j<$cols;$j++){    ?>  

        <td style="width:24px;height:24px;" align="center">  

        <input type="hidden" name="open<?php echo $i."_".$j;?>" value="<?php echo $data["open".$i."_".$j];?>">  

        <input type="hidden" name="data<?php echo $i."_".$j;?>" value="<?php echo $data["data".$i."_".$j];?>">  

        <?php if($data["open".$i."_".$j]){//show the value of node,if the node has been opened ?>  

            <?php echo $data["data".$i."_".$j]==100?"":$data["data".$i."_".$j];?>  

        <?php }else{//show a button ,if the node has not been opened ?>  

            <input type="button" value="" onclick="clickNum('<?php echo $i."_".$j;?>')"  style="width:20px;height:20px;">  

        <?php } ?>  

        </td>  

    <?php } ?>  

    </tr>  

<?php } ?>  

</table>  

</form>  

<script type="text/javascript">  

function clickNum(value){//click a node  

    <?php if($checkflag > 0)echo 'return;';//if game is clear or game is over ?>  

    document.forms[0].clickvalue.value = value;  

    document.forms[0].submit();  

}  

<?php if($checkflag == 0 && $click_count>0)echo 'setTimeout("timerun()",1000);';//time running ?>  

<?php if($checkflag == 1)echo 'alert("恭喜,雷全部清掉了!php100.com");';?>  

<?php if($checkflag == 2)echo 'alert("太挫了,又被雷炸死了");';?>  

function timerun(){//time running  

    var timelist = document.forms[0].timeshow.value.split(":");  

    var sec = parseInt(timelist[1],10) + 1;  

    var min = sec < 60?parseInt(timelist[0],10):(parseInt(timelist[0],10) + 1);  

    document.forms[0].timeshow.value = (min>9?min:"0"+min)+":"+(sec > 9?sec:"0"+sec);  

    setTimeout("timerun()",1000);  

}  

</script>  

</body>  

</html>

时间: 2024-09-01 08:42:36

php开发的简易扫雷游戏的相关文章

php实现的简易扫雷游戏实例_php技巧

本文实例讲述了php实现的简易扫雷游戏.分享给大家供大家参考.具体如下: <?php $init = $_POST["init"];//game restart $clickvalue = $_POST["clickvalue"];//minesweeping $checkflag = 0;//Victory or defeat $click_count = 0;//clicks count if($init == null && $click

C#如何开发扫雷游戏

简单的总结一下,如何利用C#进行WinForm 扫雷小游戏的开发: 扫雷游戏的主要设计的类有三个: Main.Pane .MineField 1)Main 是主控窗体,负责项目的启动和关闭:并协调内部各个组建模块的协调工作. 2)Pane是一个方格的封装,是雷区的重要组建:它表示一个方格的当前状态,以及是否布雷等信息. 3)MineField是雷区的封装,是游戏的核心组建:它负责方格的布局以及地雷的分布:并控制玩家的基本操作以及正确的响应. 类的实现: 一. Pane类 功能描述:Pane是一个

基于C语言实现的扫雷游戏代码_C 语言

本文详细讲述了基于C语言实现的扫雷游戏代码,代码中备有比较详细的注释,便于读者阅读和理解.希望对学习游戏开发的朋友能有一点借鉴价值. 完整的实例代码如下: /* 模拟扫雷游戏 */ #include <graphics.h> #include <math.h> #include <stdio.h> #include <dos.h> #include <stdlib.h> #include <conio.h> #include <

J2ME伪高手先锋开讲—扫雷游戏的设计

设计 J2ME伪高手先锋开讲--扫雷游戏的设计 首先我要装得像高手一样,来假装把系统稍微分析一下. 一般,按照java得开发模式,这种程序一般是分为三个模块来开发. 如下三个: 一个程序运作的主文件,也就是一个midlet的继承: 一个界面的表示类,也就是一个canvas的继承,界面上应该有些菜单,如new.exit 什么的,那就应该要 implements一个 commandListener消息监听类(大家可以把java的消息监听理解为一个线程,一直像倭寇那样对看得顺眼的东西虎视耽耽,当然这里

ASP开发WAP简易邮件系统实例

下一篇:ASP开发WAP简易邮件系统实例(续) 随着手机用户的不断增加,WAP站点如雨后春笋迅速的滋长开来,手机邮箱也不断的出现在人的眼前,笔者也曾经开发了一套手机邮箱的系统,但由于时间仓促再加上后来一直忙于工作事情,系统功能也就再未加强,今日有幸借助于IT168原创网公开出来,与大家共同分享,希望大家可以借题发挥,加强系统功能,能够更好的应用于实际. 测试软件:Opera M3gate 测试机型:Eg730+ Nokia 6681 Moto V3i 邮件组件:W3 Jmail 4.4 一.WM

ASP开发WAP简易邮件系统实例(续)

上一篇:ASP开发WAP简易邮件系统实例 3) 发送邮件 图五 发送邮件功能的实现主要采用了Jmail.Message对象完成,关于所要用到的对象相关知识在前面已经叙述过了,大家可以将上面的功能介绍与源码对照起来阅读,这样有助于理解整个邮件发送过程,当然如果将WM元素换为HTMLF元素,这样一个简单的WEB邮件发送功能也就完成了,send.asp为邮件发送页面 sendok.asp为邮件发送处理页面 Send.asp 〈% @LANGUAGE="VBSCRIPT" CODEPAGE=&

Flash游戏开发系列一:游戏中的敌人(7)

第六篇:Flash游戏开发系列一:游戏中的敌人. 五.跟踪导弹(续完) 上次我们已经知道怎样让导弹的旋转看起来像那么回事,紧接着就是让导弹运动起来了. 导弹的一些属性,我们需要好好定义一下,这是完整的初始化函数: init = function () {enemy._x = 40;enemy._y = 350;enemy._rotation = 0;enemy_obj.MAXAngle = 6;enemy_obj.MAXSpeed = 4;enemy_obj.speedX = enemy_obj

Flash游戏开发系列一:游戏中的敌人(6)

第五篇:Flash游戏开发系列一:游戏中的敌人. 五.跟踪导弹(续) 前面讲过了如何让导弹朝向玩家,但是真正在应用的时候,不可能这么生硬的体现.大家可能也发现了,导弹的方向一直指向玩家,其实很不真实,那么如何才能更加真实一些呢.常用的方法有几种,我们这里介绍其中一种,其它的大家可能要去参考游戏开发图书了. 在这里,我们使用的方法是,导弹有一个最大转向角度,也就是说,如果转向达到这个角度,就不能再转了,这样,看起来就会真实一些,导弹也就不回一下子面对玩家,看看下面这个例子,我把导弹的最大转向角度设

Flash游戏开发系列一:游戏中的敌人(5)

第四篇:Flash游戏开发系列一:游戏中的敌人. 五.跟踪导弹 看看这个例子,在动画屏幕上按下鼠标,导弹就会跟踪玩家,直到击中玩家: 对于新手来说,一下子就实现它可能不太容易,我们来一点一点的做. (1)导弹的方向 我们先来实现导弹朝向玩家的功能,就像下面这个:(按下鼠标观看) 首先,我们注意到,敌人的导弹是要朝向玩家的,这和前面不同.前面的敌人是一个圆头圆脑的家伙,不用分辨它的方向.我们就先来看一下如何让敌人有方向感. 首先给新手讲解一下基本知识:用鼠标来触发动画. 我们先设定一个变量,布尔类