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 相关文章推荐
使用 eAccelerator加速PHP代码的方法
Sep 30 PHP
创建配置文件 用PHP写出自己的BLOG系统 2
Apr 12 PHP
linux下使用ThinkPHP需要注意大小写导致的问题
Aug 02 PHP
PHP逐行输出(ob_flush与flush的组合)
Feb 04 PHP
php反射应用示例
Feb 25 PHP
推荐25款php中非常有用的类库
Sep 29 PHP
php实现的简易扫雷游戏实例
Jul 09 PHP
部署PHP时的4个配置修改说明
Oct 19 PHP
PHP实现GIF图片验证码
Nov 04 PHP
PHP的CURL方法curl_setopt()函数案例介绍(抓取网页,POST数据)
Dec 14 PHP
php中Ioc(控制反转)和Di(依赖注入)
May 07 PHP
PHP自定义函数实现数组比较功能示例
Oct 19 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
Flash空降上海 化身大魔王接受挑战
2020/03/02 星际争霸
php 操作调试的方法
2012/07/12 PHP
preg_match_all使用心得分享
2014/01/31 PHP
PHP return语句另类用法不止是在函数中
2014/09/17 PHP
让ThinkPHP的模板引擎达到最佳效率的方法详解
2017/03/14 PHP
PHP-CGI远程代码执行漏洞分析与防范
2017/05/07 PHP
PHP实现的最大正向匹配算法示例
2017/12/19 PHP
ModelDialog JavaScript模态对话框类代码
2011/04/17 Javascript
js 定时器setTimeout无法调用局部变量的解决办法
2013/11/28 Javascript
使用javascript实现有效时间的控制,并显示将要过期的时间
2014/01/02 Javascript
PHP捕捉异常中断的方法
2016/10/24 Javascript
详解支持Angular 2的表格控件
2017/01/19 Javascript
Vue + Webpack + Vue-loader学习教程之相关配置篇
2017/03/14 Javascript
js实现下拉框效果(select)
2017/03/28 Javascript
详解vue-cli项目开发/生产环境代理实现跨域请求
2019/07/23 Javascript
js原生map实现的方法总结
2020/01/19 Javascript
vue-socket.io跨域问题有效解决方法
2020/02/11 Javascript
解决Vue 移动端点击出现300毫秒延迟的问题
2020/07/21 Javascript
跟老齐学Python之有容乃大的list(3)
2014/09/15 Python
python中sets模块的用法实例
2014/09/30 Python
Python多进程并发(multiprocessing)用法实例详解
2015/06/02 Python
Python安装官方whl包和tar.gz包的方法(推荐)
2017/06/04 Python
带你了解python装饰器
2017/06/15 Python
python+selenium实现京东自动登录及秒杀功能
2017/11/18 Python
python实现事件驱动
2018/11/21 Python
使用python爬取抖音视频列表信息
2019/07/15 Python
浅谈python锁与死锁问题
2020/08/14 Python
丝芙兰美国官网:SEPHORA美国
2016/08/03 全球购物
法国珠宝店:CLEOR
2017/01/29 全球购物
Boutique 1美国:阿联酋奢侈时尚零售商
2017/10/16 全球购物
Unix控制后台进程都有哪些进程
2016/09/22 面试题
消防安全责任书
2014/04/14 职场文书
2014国庆节餐厅促销活动策划方案
2014/09/16 职场文书
建党伟业观后感
2015/06/01 职场文书
篮球赛新闻稿
2015/07/17 职场文书
关于Javascript闭包与应用的详解
2021/04/22 Javascript