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 Ajax实现页面无刷新发表评论
Jan 02 PHP
php实现的MySQL通用查询程序
Mar 11 PHP
php获取mysql版本的几种方法小结
Mar 25 PHP
php adodb连接带密码access数据库实例,测试成功
May 14 PHP
PHP设计模式之结构模式的深入解析
Jun 13 PHP
使用PHP获取当前url路径的函数以及服务器变量
Jun 29 PHP
PHP COOKIE及时生效的方法介绍
Feb 14 PHP
ThinkPHP CURD方法之order方法详解
Jun 18 PHP
PHP中数据库单例模式的实现代码分享
Aug 21 PHP
php实现的一个简单json rpc框架实例
Mar 30 PHP
PHP编程计算日期间隔天数的方法
Apr 26 PHP
PHP单元测试配置与使用方法详解
Dec 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
实测在class的function中include的文件中非php的global全局环境
2013/07/15 PHP
PHP简单实现正则匹配省市区的方法
2018/04/13 PHP
PHP 实现链式操作
2021/03/09 PHP
javascript动态改变img的src属性图片不显示的解决方法
2010/10/20 Javascript
js判断是否为数组的函数: isArray()
2011/10/30 Javascript
javascript面向对象编程代码
2011/12/19 Javascript
浅析JS中document对象的一些重要属性
2014/03/06 Javascript
常用jQuery选择器总结
2014/07/11 Javascript
JavaScript语言对Unicode字符集的支持详解
2014/12/30 Javascript
原生js实现的贪吃蛇网页版游戏完整实例
2015/05/18 Javascript
jQuery实现仿QQ头像闪烁效果的文字闪动提示代码
2015/11/03 Javascript
jQuery中each()、find()和filter()等节点操作方法详解(推荐)
2016/05/25 Javascript
js中开关变量使用实例
2017/02/24 Javascript
js实现瀑布流效果(自动生成新的内容)
2017/03/16 Javascript
angular或者js怎么确定选中ul中的哪几个li
2017/08/16 Javascript
浏览器事件循环与vue nextTicket的实现
2019/04/16 Javascript
在Python程序中操作文件之flush()方法的使用教程
2015/05/24 Python
Python基于DES算法加密解密实例
2015/06/03 Python
修复CentOS7升级Python到3.6版本后yum不能正确使用的解决方法
2018/01/26 Python
python操作redis方法总结
2018/06/06 Python
对django中render()与render_to_response()的区别详解
2018/10/16 Python
python 的 openpyxl模块 读取 Excel文件的方法
2019/09/09 Python
将python依赖包打包成window下可执行文件bat方式
2019/12/26 Python
python进度条显示之tqmd模块
2020/08/22 Python
印度领先的在线时尚商店:Koovs
2016/08/28 全球购物
传播学毕业生求职信
2013/10/11 职场文书
心得体会怎么写
2013/12/30 职场文书
运动会入场式解说词
2014/02/18 职场文书
十佳文明家庭事迹
2014/05/25 职场文书
拒绝黄毒毒宣传标语
2014/06/26 职场文书
感恩教育月活动总结
2014/07/07 职场文书
党员领导干部民主生活会批评与自我批评发言
2014/09/28 职场文书
常住证明范本
2015/06/23 职场文书
解决Jupyter-notebook不弹出默认浏览器的问题
2021/03/30 Python
SpringBoot整合minio快速入门教程(代码示例)
2022/04/03 Java/Android
HTML5中的DOCUMENT.VISIBILITYSTATE属性详解
2023/05/07 HTML / CSS