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 相关文章推荐
div移动 输入框不能输入的问题
Nov 19 Javascript
基于jquery封装的一个js分页
Nov 15 Javascript
圣诞节Merry Christmas给博客添加浪漫的下雪效果基于jquery实现
Dec 27 Javascript
js css后面所带参数含义介绍
Aug 18 Javascript
js获取图片宽高的方法
Nov 25 Javascript
js中常用的Tab切换效果(推荐)
Aug 30 Javascript
原生JS取代一些JQuery方法的简单实现
Sep 20 Javascript
JavaScript随机生成颜色的方法
Oct 15 Javascript
javascript入门之数组[新手必看]
Nov 21 Javascript
Bootstrap禁用响应式布局的实现方法
Mar 09 Javascript
BootStrap table实现表格行拖拽效果
Dec 01 Javascript
深入浅析React中diff算法
May 19 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
Warning: session_destroy() : Trying to destroy uninitialized sessionq错误
2011/06/16 PHP
PHP+Mysql日期时间如何转换(UNIX时间戳和格式化日期)
2012/07/15 PHP
深入Apache与Nginx的优缺点比较详解
2013/06/17 PHP
php cURL和Rolling cURL并发方式比较
2013/10/30 PHP
jQuery 源码分析笔记(2) 变量列表
2011/05/28 Javascript
javascript右下角弹层及自动隐藏(自己编写)
2013/11/20 Javascript
iframe调用父页面函数示例详解
2014/07/17 Javascript
浅谈JavaScript中定义变量时有无var声明的区别
2014/08/18 Javascript
浅谈JavaScript实现面向对象中的类
2014/12/09 Javascript
jQuery源码分析之Callbacks详解
2015/03/13 Javascript
jQuery div拖拽用法实例
2016/01/14 Javascript
javascript基本算法汇总
2016/03/09 Javascript
在js中做数字字符串补0(js补零)
2017/03/25 Javascript
Vue Ajax跨域请求实例详解
2017/06/20 Javascript
使用D3.js制作图表详解
2017/08/13 Javascript
React从react-router路由上做登陆验证控制的方法
2018/05/10 Javascript
浅谈VUE单页应用首屏加载速度优化方案
2018/08/28 Javascript
基于Vue和Element-Ui搭建项目的方法
2019/09/06 Javascript
JS原型和原型链原理与用法实例详解
2020/02/05 Javascript
vue实现整屏滚动切换
2020/06/29 Javascript
uni-app使用countdown插件实现倒计时
2020/11/01 Javascript
基于Django模板中的数字自增(详解)
2017/09/05 Python
pycharm: 恢复(reset) 误删文件的方法
2018/10/22 Python
Python3几个常见问题的处理方法
2019/02/26 Python
python中调试或排错的五种方法示例
2019/09/12 Python
20行Python代码实现视频字符化功能
2020/04/13 Python
python中random模块详解
2021/03/01 Python
域名注册、建站工具、网页主机、SSL证书:Dynadot
2017/01/06 全球购物
eVitamins日本:在线购买折扣维生素、补品和草药
2019/04/04 全球购物
linux下进程间通信的方式
2014/12/23 面试题
short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?
2014/09/26 面试题
大学生学习党课思想汇报
2014/01/03 职场文书
运动会广播稿200米
2014/01/27 职场文书
房地产开盘策划方案
2014/02/10 职场文书
中学生期中自我鉴定
2014/04/20 职场文书
节约用电标语
2014/06/17 职场文书