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 相关文章推荐
PHP安装问题
Oct 09 PHP
PHP 中的批处理的实现
Jun 14 PHP
php GD绘制24小时柱状图
Jun 28 PHP
php表单提交问题的解决方法
Apr 12 PHP
php中文乱码怎么办如何让浏览器自动识别utf-8
Jan 15 PHP
php对包含html标签的字符串进行截取的函数分享
Jun 19 PHP
Laravel框架学习笔记(二)项目实战之模型(Models)
Oct 15 PHP
php+mysql查询优化简单实例
Jan 13 PHP
PHP处理大量表单字段的便捷方法
Feb 07 PHP
php版微信公众平台入门教程之开发者认证的方法
Sep 26 PHP
yii2.0整合阿里云oss的示例代码
Sep 19 PHP
php实现的AES加密类定义与用法示例
Jan 29 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
php控制linux服务器常用功能 关机 重启 开新站点等
2012/09/05 PHP
smarty学习笔记之常见代码段用法总结
2016/03/19 PHP
GreyBox技术总结(转)
2010/11/23 Javascript
基于jquery的高性能td和input切换并可修改内容实现代码
2011/01/09 Javascript
基于jquery的图片轮播 tab切换组件
2012/07/19 Javascript
js如何判断不同系统的浏览器类型
2013/10/28 Javascript
一个html5播放视频的video控件只支持android的默认格式mp4和3gp
2014/05/08 Javascript
JavaScript下的时间格式处理函数Date.prototype.format
2016/01/27 Javascript
JavaScript和jquery获取父级元素、子级元素、兄弟元素的方法
2016/06/05 Javascript
Angular组件化管理实现方法分析
2017/03/17 Javascript
bootstrap-table实现服务器分页的示例 (spring 后台)
2017/09/01 Javascript
JS排序算法之希尔排序与快速排序实现方法
2017/12/12 Javascript
vue+express+jwt持久化登录的方法
2019/06/14 Javascript
解决vue单页面修改样式无法覆盖问题
2019/08/05 Javascript
vue iview的菜单组件Mune 点击不高亮的解决方案
2019/11/01 Javascript
JS script脚本中async和defer区别详解
2020/06/24 Javascript
vue 使用rules对表单字段进行校验的步骤
2020/12/25 Vue.js
Python实现查找匹配项作处理后再替换回去的方法
2017/06/10 Python
Django使用httpresponse返回用户头像实例代码
2018/01/26 Python
Python+PIL实现支付宝AR红包
2018/02/09 Python
在Python3 numpy中mean和average的区别详解
2019/08/24 Python
Python语言异常处理测试过程解析
2020/01/08 Python
使用TFRecord存取多个数据案例
2020/02/17 Python
英国最大的邮寄种子和植物公司:Thompson & Morgan
2017/09/21 全球购物
韩国演唱会订票网站:StubHub韩国
2019/01/17 全球购物
c/c++某大公司的两道笔试题
2014/02/02 面试题
如何掌握自荐信格式呢
2013/11/19 职场文书
师范教师毕业鉴定
2014/01/13 职场文书
学校春季防火方案
2014/06/08 职场文书
测绘工程专业求职信
2014/07/15 职场文书
整改落实自查报告
2014/11/05 职场文书
2015年村计划生育工作总结
2015/04/28 职场文书
标枪加油稿
2015/07/22 职场文书
2016暑期社会实践新闻稿
2015/11/25 职场文书
SpringMVC 整合SSM框架详解
2021/08/30 Java/Android
JS数组去重详情
2021/11/07 Javascript