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 相关文章推荐
利用递归把多维数组转为一维数组的函数
Oct 09 PHP
discuz authcode 经典php加密解密函数解析
Jul 12 PHP
php设计模式 Builder(建造者模式)
Jun 26 PHP
探讨方法的重写(覆载)详解
Jun 08 PHP
php网站地图生成类示例
Jan 13 PHP
PHP根据IP判断地区名信息的示例代码
Mar 03 PHP
PHP实现获取域名的方法小结
Nov 05 PHP
详解Yii2 rules 的验证规则
Dec 02 PHP
laravel5.4生成验证码的实例讲解
Aug 05 PHP
Laravel框架实现的记录SQL日志功能示例
Jun 19 PHP
PHP封装的验证码工具类定义与用法示例
Aug 22 PHP
jQuery+PHP实现图片上传并提交功能
Jul 27 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
基于HTTP长连接的&quot;服务器推&quot;技术的php 简易聊天室
2009/10/31 PHP
基于PHP微信红包的算法探讨
2016/07/21 PHP
js操作时间(年-月-日 时-分-秒 星期几)
2010/06/20 Javascript
按Enter键触发事件的jquery方法实现代码
2014/02/17 Javascript
jQuery表格排序组件-tablesorter使用示例
2014/05/26 Javascript
Node.js+jade+mongodb+mongoose实现爬虫分离入库与生成静态文件的方法
2017/09/20 Javascript
vue-router相关基础知识及工作原理
2018/03/16 Javascript
Vue+mui实现图片的本地缓存示例代码
2018/05/24 Javascript
angularJS开发注意事项
2018/05/26 Javascript
jQuery Ajax实现Select多级关联动态绑定数据的实例代码
2018/10/26 jQuery
详解JavaScript 中的批处理和缓存
2020/11/19 Javascript
Python的Django中django-userena组件的简单使用教程
2015/05/30 Python
Python中unittest模块做UT(单元测试)使用实例
2015/06/12 Python
python 简单的绘图工具turtle使用详解
2017/06/21 Python
Anaconda多环境多版本python配置操作方法
2017/09/12 Python
Python基于多线程实现ping扫描功能示例
2018/07/23 Python
python2和python3的输入和输出区别介绍
2018/11/20 Python
对python的unittest架构公共参数token提取方法详解
2018/12/17 Python
pygame实现贪吃蛇游戏(下)
2019/10/29 Python
python定义类self用法实例解析
2020/01/22 Python
在Python中通过threshold创建mask方式
2020/02/19 Python
Python grequests模块使用场景及代码实例
2020/08/10 Python
css3 中实现炫酷的loading效果
2019/04/26 HTML / CSS
三星英国官网:Samsung英国
2018/09/25 全球购物
美国在线打印网站:Overnight Prints
2018/10/11 全球购物
英国最大的自有市场,比亚马逊便宜:Flubit
2019/03/19 全球购物
瑞士隐形眼镜和护理产品网上商店:Linsenklick
2019/10/21 全球购物
程序员跳槽必看面试题总结
2013/06/28 面试题
妇产科护士自我鉴定
2013/10/15 职场文书
医学专业毕业生推荐信
2013/11/14 职场文书
预备党员转正党小组意见
2015/06/01 职场文书
薪资证明范本
2015/06/19 职场文书
导游词之吉林花园山
2019/10/17 职场文书
Python实现信息轰炸工具(再也不怕说不过别人了)
2021/06/11 Python
游戏《东方异文石:爱亚利亚黎明》正式版发布
2022/04/03 其他游戏
css清除浮动clearfix:after的用法详解(附完整代码)
2023/05/21 HTML / CSS