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 相关文章推荐
js下弹出窗口的变通
Apr 18 Javascript
关于Ext中form移除textfield方法:hide(),setVisible(false),remove()
Dec 02 Javascript
jquery单行文字向上滚动效果的实现代码
Sep 05 Javascript
node.js中的fs.statSync方法使用说明
Dec 16 Javascript
JavaScript图片轮播代码分享
Jul 31 Javascript
JavaScript中三种异步上传文件方式
Mar 06 Javascript
JavaScript  cookie 跨域访问之广告推广
Apr 20 Javascript
解决浏览器会自动填充密码的问题
Apr 28 Javascript
js原生实现移动端手指滑动轮播图效果的示例
Jan 02 Javascript
详解webpack编译速度提升之DllPlugin
Feb 05 Javascript
Vue项目中使用better-scroll实现菜单映射功能方法
Sep 11 Javascript
js简单实现自动生成表格功能示例
Jun 02 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
二进制交叉权限微型php类分享
2014/02/07 PHP
PhpDocumentor 2安装以及生成API文档的方法
2014/05/21 PHP
PHP strtotime函数用法、实现原理和源码分析
2015/02/04 PHP
学习php设计模式 php实现桥梁模式(bridge)
2015/12/07 PHP
php实现留言板功能(代码详解)
2017/03/28 PHP
ThinkPHP防止重复提交表单的方法实例分析
2018/05/10 PHP
List the UTC Time on a Computer
2007/06/11 Javascript
在JavaScript中,为什么要尽可能使用局部变量?
2009/04/06 Javascript
基于jQuery的图片大小自动适应实现代码
2010/11/17 Javascript
利用JQuery的load函数动态加载其它页面的内容的实现代码
2010/12/14 Javascript
js中apply方法的使用详细解析
2013/11/04 Javascript
7个JS基础知识总结
2014/03/05 Javascript
JavaScript通过事件代理高亮显示表格行的方法
2015/05/27 Javascript
Knockoutjs 学习系列(二)花式捆绑
2016/06/07 Javascript
AngularJS通过$sce输出html的方法
2016/09/22 Javascript
BootStrap Table对前台页面表格的支持实例讲解
2016/12/22 Javascript
js脚本编写简单刷票投票系统
2017/06/27 Javascript
使用异步组件优化Vue应用程序的性能
2019/04/28 Javascript
优雅的使用javascript递归画一棵结构树示例代码
2019/09/22 Javascript
vue 限制input只能输入正数的操作
2020/08/05 Javascript
Python urllib模块urlopen()与urlretrieve()详解
2013/11/01 Python
Python使用MySQLdb for Python操作数据库教程
2014/10/11 Python
在Python的Django框架中编写编译函数
2015/07/20 Python
一些常用的Python爬虫技巧汇总
2016/09/28 Python
python绘制多个子图的实例
2019/07/07 Python
django的model操作汇整详解
2019/07/26 Python
Python自动化导出zabbix数据并发邮件脚本
2019/08/16 Python
python yield关键词案例测试
2019/10/15 Python
虚拟机下载python是否需要联网
2020/07/27 Python
基于zepto的插件之移动端无缝向上滚动并上下触摸滑动实例代码
2016/12/20 HTML / CSS
什么是Remote Module
2016/06/10 面试题
水产养殖学应届生求职信
2013/09/29 职场文书
大学生家政服务项目创业计划书
2014/01/30 职场文书
预备党员入党自我评价范文
2014/03/10 职场文书
因工资原因离职的辞职信范文
2015/05/12 职场文书
2016新年致辞
2015/08/01 职场文书