php实现贪吃蛇小游戏


Posted in PHP onJuly 26, 2016

贪吃蛇游戏是经典手机游戏,既简单又耐玩。通过控制蛇头方向吃蛋,使得蛇变长,从而获得积分。在诺基亚时代,风靡整个手机界,今天我们来看看另类的,如何使用php来实现贪吃蛇小游戏

废话不多说,代码奉上:

control.php

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8"/>
  </head>
  <body>
     <a href="control.php?a=up">上<a/>       <?session_start(); echo $_SESSION['count'];?>分<br/>
    <a href="control.php?a=left">左<a/> <a href="control.php?a=right">右<a/><br/>
     <a href="control.php?a=down">下<a/>
    <?
       
      switch($_GET['a']){
        case "up";
          $_SESSION['con']="up";
        break;
        case "down":
          $_SESSION['con']="down";
        break;
        case "left":
          $_SESSION['con']="left";
        break;
        case "right":
          $_SESSION['con']="right";
        break;
      }
    ?>
  </body>
</html>

main.php

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-9"/>
    <meta http-equiv="refresh" content="0.5"/>
  </head>
  <frameset rows="95,*" border="1" noresize >
    <frame src="control.php" name="top"/>
    <frame src="./tcs.php" name="menu"/>
  </frameset>
</html>

tcs.php

<?php
  session_start();
  $_SESSION['ud'];
  $_SESSION['lr'];  
  $im = imagecreatetruecolor(300,300);
  $blue = imagecolorallocate($im,0,0,255);
  $red = imagecolorallocate($im,255,0,0);
  $c1 = imagecolorallocate($im,200,200,200);
  imagefill($im,0,0,$c1);
  if(!isset($_SESSION['a'])&&!isset($_SESSION['b'])){
    $_SESSION['a'] =rand(0,290);
    $_SESSION['b'] =rand(0,290);
  }
  if(isset($_SESSION['a'])&&isset($_SESSION['b'])){
    imagerectangle($im,$_SESSION['a'],$_SESSION['b'],$_SESSION['a']+10,$_SESSION['b']+10,$red); 
  }
  if(abs(($_SESSION['lr']-$_SESSION['a']))<=5&&abs($_SESSION['ud']-$_SESSION['b'])<=5){
    unset($_SESSION['a']);
    unset($_SESSION['b']);
    $_SESSION['count']++;
  }
  switch($_SESSION['con']){
    case "up";
      if($_SESSION['ud']>10)
        $_SESSION['ud']-=10;
      else
        $_SESSION['ud']=0;
    break;
    case "down":
      if($_SESSION['ud']<=280)
        $_SESSION['ud']+=10;
      else
        $_SESSION['ud']=290;
    break;
    case "left":
      if($_SESSION['lr']>10)
        $_SESSION['lr']-=10;
      else
        $_SESSION['lr']=0;
    break;
    case "right":
      if($_SESSION['lr']<=280)
        $_SESSION['lr']+=10;
      else
        $_SESSION['lr']=290;
    break;
  }
  for($i=0;$i<=$_SESSION['count'];$i++){
    switch($_SESSION['con']){
      case "up":
        $_SESSION['udnext'] = $_SESSION['ud']+10*$i;
        imagerectangle($im,$_SESSION['lr'],$_SESSION['udnext'],$_SESSION['lr']+10,$_SESSION['udnext']+10,$blue);
        // imagerectangle($im,$_SESSION['lr'],$_SESSION['udtime'][time()-$i],$_SESSION['lr']+10,$_SESSION['udtime'][time()-$i]+10,$blue);
      break;
      case "down":
        $_SESSION['udnext'] = $_SESSION['ud']-10*$i;
        imagerectangle($im,$_SESSION['lr'],$_SESSION['udnext'],$_SESSION['lr']+10,$_SESSION['udnext']+10,$blue);
        // imagerectangle($im,$_SESSION['lr'],$_SESSION['udtime'][time()+$i],$_SESSION['lr']+10,$_SESSION['udtime'][time()+$i]+10,$blue);
      break;
      case "left":
        $_SESSION['lrnext'] = $_SESSION['lr']+10*$i;
        imagerectangle($im,$_SESSION['lrnext'],$_SESSION['ud'],$_SESSION['lrnext']+10,$_SESSION['ud']+10,$blue);
        // imagerectangle($im,$_SESSION['lrtime'][time()-$i],$_SESSION['ud'],$_SESSION['lrtime'][time()-$i]+10,$_SESSION['ud']+10,$blue);
      break;
      case "right":
        $_SESSION['lrnext'] = $_SESSION['lr']-10*$i;
        imagerectangle($im,$_SESSION['lrnext'],$_SESSION['ud'],$_SESSION['lrnext']+10,$_SESSION['ud']+10,$blue);
        // imagerectangle($im,$_SESSION['lrtime'][time()+$i],$_SESSION['ud'],$_SESSION['lrtime'][time()+$i]+10,$_SESSION['ud']+10,$blue);
      break;
    }
    //imagerectangle($im,$_SESSION['lr'],$_SESSION['ud'],$_SESSION['lr']+10,$_SESSION['ud']+10,$blue);
  }
  header("Content-Type: image/jpeg");
  imagejpeg($im);
  imagedestroy($im);  
?>
PHP 相关文章推荐
基于qmail的完整WEBMAIL解决方案安装详解
Oct 09 PHP
PHP+DBM的同学录程序(2)
Oct 09 PHP
php5中类的学习
Mar 28 PHP
PHP下通过file_get_contents的代理使用方法
Feb 16 PHP
yii操作cookie实例简介
Jul 09 PHP
PHP静态文件生成类实例
Nov 29 PHP
php实现格式化多行文本为Js可用格式
Apr 15 PHP
CodeIgniter配置之SESSION用法实例分析
Jan 19 PHP
Yii中srbac权限扩展模块工作原理与用法分析
Jul 14 PHP
PHP socket 模拟POST 请求实例代码
Jul 18 PHP
PHP实现的注册,登录及查询用户资料功能API接口示例
Jun 06 PHP
Yii2 中实现单点登录的方法
Mar 09 PHP
ThinkPHP和UCenter接口冲突的解决方法
Jul 25 #PHP
php禁用函数设置及查看方法详解
Jul 25 #PHP
Yii2中Restful API原理实例分析
Jul 25 #PHP
Yii2中设置与获取别名的函数(setAlias和getAlias)用法分析
Jul 25 #PHP
详解PHP实现定时任务的五种方法
Jul 25 #PHP
Yii2中YiiBase自动加载类、引用文件方法分析(autoload)
Jul 25 #PHP
PHP中session跨子域的三种实现方法
Jul 25 #PHP
You might like
分享最受欢迎的5款PHP框架
2014/11/27 PHP
php 反斜杠处理函数addslashes()和stripslashes()实例详解
2016/12/25 PHP
索趣科技的答案
2007/02/07 Javascript
jQuery div层的放大与缩小简单实现代码
2013/03/28 Javascript
关于JQuery($.load)事件的用法和分析
2013/04/09 Javascript
js函数setTimeout延迟执行的简单介绍
2013/07/17 Javascript
JavaScript prototype 使用介绍
2013/08/29 Javascript
js跨域访问示例(客户端/服务端)
2014/05/19 Javascript
Javascript的setTimeout()使用闭包特性时需要注意的问题
2014/09/23 Javascript
jQuery实现锚点scoll效果实例分析
2015/03/10 Javascript
JavaScript实现找质数代码分享
2015/03/24 Javascript
js显示当前日期时间和星期几
2015/10/22 Javascript
详解原生JavaScript实现jQuery中AJAX处理的方法
2016/05/10 Javascript
AngularJS ng-app 指令实例详解
2016/07/30 Javascript
js通过指定下标或指定元素进行删除数组的实例
2017/01/12 Javascript
jQuery实现遍历复选框的方法示例
2017/03/06 Javascript
react router 4.0以上的路由应用详解
2017/09/21 Javascript
微信小程序实现YDUI的ScrollTab组件
2018/02/02 Javascript
详解用Node.js写一个简单的命令行工具
2018/03/01 Javascript
vue.js input框之间赋值方法
2018/08/24 Javascript
webpack打包nodejs项目的方法
2018/09/26 NodeJs
vue实现的树形结构加多选框示例
2019/02/02 Javascript
微信小程序从注册账号到上架(图文详解)
2019/07/17 Javascript
微信小程序swiper组件实现抖音翻页切换视频功能的实例代码
2020/06/24 Javascript
动态实现element ui的el-table某列数据不同样式的示例
2021/01/22 Javascript
python学习必备知识汇总
2017/09/08 Python
提升python处理速度原理及方法实例
2019/12/25 Python
Python将list元素转存为CSV文件的实现
2020/11/16 Python
乐天旅游香港网站:日本饭店预订
2017/11/29 全球购物
2019年c语言经典面试题目
2016/08/17 面试题
优秀医生事迹材料
2014/02/12 职场文书
2014年四风问题自我剖析材料
2014/09/15 职场文书
小学生国庆65周年演讲稿范文(2篇)
2014/09/21 职场文书
Vue h函数的使用详解
2022/02/18 Vue.js
解决IDEA翻译插件Translation报错更新TTK失败不能使用
2022/04/24 Python
Redis实现订单过期删除的方法步骤
2022/06/05 Redis