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实现Ftp用户的在线管理的代码
Mar 06 PHP
PHP句法规则详解 入门学习
Nov 09 PHP
PHP转换IP地址到真实地址的方法详解
Jun 09 PHP
PHP 循环删除无限分类子节点的实现代码
Jun 21 PHP
适用于抽奖程序、随机广告的PHP概率算法实例
Apr 09 PHP
php简单分页类实现方法
Feb 26 PHP
利用PHP将部分内容用星号替换
Apr 21 PHP
php阳历转农历优化版
Aug 08 PHP
PHP实现随机生成水印图片功能
Mar 22 PHP
PHP简单装饰器模式实现与用法示例
Jun 22 PHP
php面试中关于面向对象的相关问题
Feb 13 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
thinkphp autoload 命名空间自定义 namespace
2015/07/17 PHP
CodeIgniter辅助之第三方类库third_party用法分析
2016/01/20 PHP
老生常谈PHP面向对象之注册表模式
2017/05/26 PHP
PHP多进程简单实例小结
2019/11/09 PHP
常用js脚本
2006/12/03 Javascript
jQuery 事件的命名空间简单了解
2013/11/22 Javascript
JavaScript和CSS交互的方法汇总
2014/12/02 Javascript
javascript实现仿腾讯游戏选择
2015/05/14 Javascript
javascript每日必学之运算符
2016/02/16 Javascript
AngularJS入门教程之路由与多视图详解
2016/08/19 Javascript
使用nodejs下载风景壁纸
2017/02/05 NodeJs
vue父组件向子组件传递多个数据的实例
2018/03/01 Javascript
webpack热模块替换(HMR)/热更新的方法
2018/04/05 Javascript
Node 搭建一个静态资源服务器的实现
2019/05/20 Javascript
使用vue引入maptalks地图及聚合效果的实现
2020/08/10 Javascript
在webstorm中配置less的方法详解
2020/09/25 Javascript
[08:29]DOTA2每周TOP10 精彩击杀集锦vol.7
2014/06/25 DOTA
json跨域调用python的方法详解
2017/01/11 Python
Python实现的微信公众号群发图片与文本消息功能实例详解
2017/06/30 Python
python如何在列表、字典中筛选数据
2018/03/19 Python
Python封装原理与实现方法详解
2018/08/28 Python
详解pandas.DataFrame中删除包涵特定字符串所在的行
2019/04/04 Python
Python 实现数据结构中的的栈队列
2019/05/16 Python
python实现二级登陆菜单及安装过程
2019/06/21 Python
python 内置函数汇总详解
2019/09/16 Python
Python3标准库glob文件名模式匹配的问题
2020/03/13 Python
pycharm实现print输出保存到txt文件
2020/06/01 Python
python实现企业微信定时发送文本消息的实例代码
2020/11/25 Python
北美大型运动类产品商城:Champs Sports
2017/01/12 全球购物
中东奢侈品购物网站:Ounass
2020/09/02 全球购物
数组越界问题
2015/10/21 面试题
Python如何实现单例模式
2016/06/03 面试题
初二政治教学反思
2014/01/12 职场文书
公司职员入党自传书
2015/06/26 职场文书
技术转让协议书
2016/03/19 职场文书
TV动画《八十龟酱观察日记》第四季宣传PV公布
2022/04/06 日漫