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 unset全局变量运用问题的深入解析
Jun 17 PHP
解析thinkphp基本配置 convention.php
Jun 18 PHP
利用curl抓取远程页面内容的示例代码
Jul 23 PHP
解析php mysql 事务处理回滚操作(附实例)
Aug 05 PHP
PHP实现采集中国天气网未来7天天气
Oct 15 PHP
php通过array_unshift函数添加多个变量到数组前端的方法
Mar 18 PHP
php使用cookie实现记住用户名和密码实现代码
Apr 27 PHP
php实现购物车功能(下)
Jan 05 PHP
ecshop适应在PHP7的修改方法解决报错的实现
Nov 01 PHP
php利用嵌套数组拼接与解析json的方法
Feb 07 PHP
php如何计算两坐标点之间的距离
Dec 29 PHP
php实现JWT验证的实例教程
Nov 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
全国FM电台频率大全 - 12 安徽省
2020/03/11 无线电
网页游戏开发入门教程二(游戏模式+系统)
2009/11/02 PHP
PHP URL地址获取函数代码(端口等) 推荐
2010/05/15 PHP
PHP编程最快明白(第一讲 软件环境和准备工作)
2010/10/25 PHP
Mysql中分页查询的两个解决方法比较
2013/05/02 PHP
php中动态变量用法实例
2015/06/10 PHP
简单谈谈php浮点数精确运算
2016/03/10 PHP
微信支付开发告警通知实例
2016/07/12 PHP
PHP实现的最大正向匹配算法示例
2017/12/19 PHP
PHP安装扩展mcrypt以及相关依赖项深入讲解
2021/03/04 PHP
javascript实现仿银行密码输入框效果的代码
2007/12/13 Javascript
JavaScript DOM 学习第五章 表单简介
2010/02/19 Javascript
js function使用心得
2010/05/10 Javascript
关于js遍历表格的实例
2013/07/10 Javascript
js取消单选按钮选中示例代码
2013/11/14 Javascript
JS根据key值获取URL中的参数值及把URL的参数转换成json对象
2015/08/26 Javascript
学习JavaScript鼠标响应事件
2015/12/25 Javascript
javascript基本语法
2016/05/31 Javascript
AngularJS使用ng-repeat指令实现下拉框
2016/08/23 Javascript
jQuery元素属性操作实例(设置、获取及删除元素属性)
2016/09/08 Javascript
react开发中如何使用require.ensure加载es6风格的组件
2017/05/09 Javascript
JS实现打字游戏
2019/12/17 Javascript
vue-cli4项目开启eslint保存时自动格式问题
2020/07/13 Javascript
Python常见文件操作的函数示例代码
2011/11/15 Python
python 字典(dict)遍历的四种方法性能测试报告
2014/06/25 Python
python实现中文输出的两种方法
2015/05/09 Python
python实现泊松图像融合
2018/07/26 Python
浅谈Python traceback的优雅处理
2018/08/31 Python
Python爬取智联招聘数据分析师岗位相关信息的方法
2019/08/13 Python
pytorch使用tensorboardX进行loss可视化实例
2020/02/24 Python
小学一年级评语大全
2014/04/22 职场文书
安全演讲稿开场白
2014/08/25 职场文书
2015年父亲节活动总结
2015/02/12 职场文书
清洁员岗位职责
2015/02/15 职场文书
怎样做好公众演讲能力?
2019/08/28 职场文书
SpringBoot项目多数据源及mybatis 驼峰失效的问题解决方法
2022/07/07 Java/Android