javascript编写贪吃蛇游戏


Posted in Javascript onJuly 07, 2015

代码很简单,这里就不多BB了,小伙伴们直接看示例吧

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html;charset=gb2312" />
<title>无标题文档</title>
</head>
<body>
<style>
*{
  margin:0;
  padding:0;
}
#wrap{
  position:relative;width:400px;height:400px;
  border:1px solid #ccc;
  margin:10px auto;
}
.snak, .snakBody{
  position:absolute;
  width:10px;height:10px;
  background:#666;
}
.food{
  position:absolute;width:10px;height:10px;
  background:#09F;display:block;
}
</style>
<div id="wrap">
  
</div>
<script src="http://ftp152341.host180.web522.com/%E6%89%93%E8%9C%9C%E8%9C%82/zepto.js"></script>
<script>
var Snak, Food;;

Food = function(op){ //op为zepto对象
  var food = $('<span class="food"></span>');
  food.css({ left : Math.floor(((op[0].clientWidth-10)*Math.random())), top : Math.floor(((op[0].clientHeight-10)*Math.random())) })
  op.append( food );
};
Snak = function(op){
  this.obj = document.createElement('div');
  this.obj.className = 'snak';
  this.op = op;
};
Snak.prototype.ev = function(){
  var _this = this, code;
  $(window).bind('keydown',function(e){
    clearInterval(_this.downTimer);
    code = e.keyCode;
    _this.downTimer = setInterval(function(){
      var l = _this.obj.offsetLeft, t = _this.obj.offsetTop;
      switch( code ){
        case 37 :
          l = l - 5;
        break;
        case 38 : 
          t = t - 5;
        break;
        case 39 : 
          l = l + 5;
        break;
        case 40:
          t = t + 5;
        break;
      };
      if( (l<0) || (t<0) || (l>400) || (t>400)){location.reload()};
      _this.obj.style.left = l + 'px';
      _this.obj.style.top = t + 'px';
      var snakB = $('.snakBody');
      for(var i=snakB.length-1; i>=0; i--){
        if(i == 0){
          snakB[0].style.left = l + 'px';
          snakB[0].style.top = t + 'px';
        }else{
          snakB[i].style.left = snakB[i-1].offsetLeft + 'px';
          snakB[i].style.top = snakB[i-1].offsetTop + 'px';
        };
      };
      if( pz(_this.obj,$('.food')[0]) ){
        $('.food').remove();
        new Food(wrap);
        $('<div class="snakBody"></div>').appendTo(wrap)
      };
    },30);
  }).bind('keyup',function(e){
  });
};
function pz(obj1,obj2){  
  var L1 = obj1.offsetLeft;
  var T1 = obj1.offsetTop;
  var R1 = L1 + obj1.offsetWidth;
  var B1 = T1 + obj1.offsetHeight;
  
  var L2 = obj2.offsetLeft;
  var T2 = obj2.offsetTop;
  var R2 = L2 + obj2.offsetWidth;
  var B2 = T2 + obj2.offsetHeight;
  if(L1 >= R2 || T1 >= B2 || R1 <= L2 || B1 <= T2){
    return false;
  }
  return true;
};
var wrap = $('#wrap'),snak = new Snak(food);
var food = new Food( wrap );
snak.ev();
wrap.append( $('<div class="snakBody"></div>') )[0].appendChild( snak.obj );
</script>
</body>
</html>

以上所述就是本文的全部内容了,希望大家能够喜欢。

Javascript 相关文章推荐
自己做的模拟模态对话框实现代码
May 23 Javascript
javascript提取URL的搜索字符串中的参数(自定义函数实现)
Jan 22 Javascript
js特效,页面下雪的小例子
Jun 17 Javascript
在JS中解析HTML字符串示例代码
Apr 16 Javascript
深入探寻seajs的模块化与加载方式
Apr 14 Javascript
JS实现动态移动层及拖动浮层关闭的方法
Apr 30 Javascript
简介JavaScript中fixed()方法的使用
Jun 08 Javascript
属于你的jQuery提示框(Tip)插件
Jan 20 Javascript
如何在Linux上安装Node.js
Apr 01 Javascript
浅谈Node Inspector 代理实现
Oct 19 Javascript
Rollup处理并打包JS文件项目实例代码
May 31 Javascript
vue中echarts引入中国地图的案例
Jul 28 Javascript
Javascript编写2048小游戏
Jul 07 #Javascript
利用JavaScript脚本实现滚屏效果的方法
Jul 07 #Javascript
JavaScript编写连连看小游戏
Jul 07 #Javascript
使用JavaScript制作一个简单的计数器的方法
Jul 07 #Javascript
JavaScript编写推箱子游戏
Jul 07 #Javascript
使用JavaScript实现连续滚动字幕效果的方法
Jul 07 #Javascript
理解JavaScript的变量的入门教程
Jul 07 #Javascript
You might like
phpexcel导入excel数据使用方法实例
2013/12/24 PHP
php格式输出文件var_export函数实例
2014/11/15 PHP
php中实现xml与mysql数据相互转换的方法
2014/12/25 PHP
javascript事件模型代码
2007/07/01 Javascript
对xmlHttp对象的理解
2011/01/17 Javascript
Javascript中判断变量是数组还是对象(array还是object)
2013/08/14 Javascript
多个checkbox被选中时如何判断是否有自己想要的
2014/09/22 Javascript
jquery实现动态画圆
2014/12/04 Javascript
修复bash漏洞的shell脚本分享
2014/12/31 Javascript
vue动态生成dom并且自动绑定事件
2017/04/19 Javascript
微信小程序之获取当前位置经纬度以及地图显示详解
2017/05/09 Javascript
Angular2使用vscode断点调试ts文件的方法
2017/12/13 Javascript
JavaScript实现区块链
2018/03/14 Javascript
react native 原生模块桥接的简单说明小结
2019/02/26 Javascript
JS中队列和双端队列实现及应用详解
2020/09/29 Javascript
element-plus一个vue3.xUI框架(element-ui的3.x 版初体验)
2020/12/02 Vue.js
[42:06]2019国际邀请赛全明星赛 8.23
2019/09/05 DOTA
python自定义类并使用的方法
2015/05/07 Python
python 时间戳与格式化时间的转化实现代码
2016/03/23 Python
python编程嵌套函数实例代码
2018/02/11 Python
python基于paramiko将文件上传到服务器代码实现
2019/07/08 Python
PYTHON如何读取和写入EXCEL里面的数据
2019/10/28 Python
HTML5使用Audio标签实现歌词同步的效果
2016/03/17 HTML / CSS
html5+css3实现一款注册表单实例
2013/04/17 HTML / CSS
html5 canvas合成海报所遇问题及解决方案总结
2017/08/03 HTML / CSS
美国农场商店:Blain’s Farm & Fleet
2020/01/17 全球购物
法律专业个人实习自我鉴定
2013/09/23 职场文书
乐观自信演讲稿范文
2014/05/21 职场文书
教师党的群众路线学习心得体会
2014/11/04 职场文书
生死抉择观后感
2015/06/09 职场文书
高一地理教学工作总结
2015/08/12 职场文书
Go语言应该什么情况使用指针
2021/07/25 Golang
python中super()函数的理解与基本使用
2021/08/30 Python
Spring 使用注解开发
2022/05/20 Java/Android
不想升级Win11?教你彻底锁定老版Windows系统的方法(附下载地址)
2022/09/23 数码科技
React更新渲染原理深入分析
2022/12/24 Javascript