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 相关文章推荐
linux php mysql数据库备份实现代码
Mar 10 PHP
php使用Smarty的相关注意事项及访问变量的几种方式
Dec 08 PHP
PHP 关于访问控制的和运算符优先级介绍
Jul 08 PHP
PHP CURL CURLOPT参数说明(curl_setopt)
Sep 30 PHP
PHP里的单例类写法实例
Jun 25 PHP
PHP使用ODBC连接数据库的方法
Jul 18 PHP
浅析Laravel5中队列的配置及使用
Aug 04 PHP
Laravel中任务调度console使用方法小结
May 07 PHP
PHP用PDO如何封装简单易用的DB类详解
Jul 30 PHP
PHP完全二叉树定义与实现方法示例
Oct 09 PHP
php+js实现的无刷新下载文件功能示例
Aug 23 PHP
PHP 计算至少是其他数字两倍的最大数的实现代码
May 26 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
在Zeus Web Server中安装PHP语言支持
2006/10/09 PHP
php discuz 主题表和回帖表的设计
2009/03/13 PHP
php中定义网站根目录的常用方法
2010/08/08 PHP
php根据身份证号码计算年龄的实例代码
2014/01/18 PHP
php获取服务器端mac和客户端mac的地址支持WIN/LINUX
2014/05/15 PHP
CI框架自动加载session出现报错的解决办法
2014/06/17 PHP
PHP实现简单实用的验证码类
2015/07/29 PHP
微信小程序 消息推送php服务器验证实例详解
2017/03/30 PHP
cument.execCommand()用法深入理解
2012/12/04 Javascript
JavaScript字符串插入、删除、替换函数使用示例
2013/07/25 Javascript
关于jquery中全局函数each使用介绍
2013/12/10 Javascript
jQuery产品间断向下滚动效果核心代码
2014/05/08 Javascript
js实现交换运动效果的方法
2015/04/10 Javascript
JavaScript使用Range调色及透明度实例
2016/09/25 Javascript
JS实现禁止鼠标右键的功能
2016/10/15 Javascript
纯js仿淘宝京东商品放大镜功能
2017/03/02 Javascript
详解vue-element Tree树形控件填坑路
2019/03/26 Javascript
浅谈目前可以使用ES10的5个新特性
2019/06/25 Javascript
JavaScript:ES2019 的新特性(译)
2019/08/08 Javascript
Node.js API详解之 dns模块用法实例分析
2020/05/15 Javascript
[04:09]2014DOTA2国际邀请赛Ti西雅图 历届冠军相继出局 BBC综述今日比赛
2014/07/20 DOTA
python+pygame简单画板实现代码实例
2017/12/13 Python
Python利用itchat库向好友或者公众号发消息的实例
2019/02/21 Python
Django实现发送邮件功能
2019/07/18 Python
python logging模块的使用
2020/09/07 Python
用Python自动清理电脑内重复文件,只要10行代码(自动脚本)
2021/01/09 Python
美国畅销的跑步机品牌:ProForm
2017/02/06 全球购物
Lookfantastic德国官网:英国知名美妆购物网站
2017/06/11 全球购物
sort命令的作用和用法
2013/08/25 面试题
工作会议主持词
2014/03/17 职场文书
《观舞记》教学反思
2014/04/16 职场文书
大学生应聘求职信
2014/05/26 职场文书
教师批评与自我批评范文
2014/10/15 职场文书
年度考核个人总结
2015/03/06 职场文书
2016简历自荐信优秀范文
2016/01/29 职场文书
使用PDF.js渲染canvas实现预览pdf的效果示例
2021/04/17 Javascript