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 相关文章推荐
JQuery给元素绑定click事件多次执行的解决方法
May 29 Javascript
JavaScript中合并数组的N种方法
Sep 16 Javascript
jQuery实现渐变下拉菜单的简单方法
Mar 11 Javascript
JS中的进制转换以及作用
Jun 26 Javascript
JS HTML5实现拖拽移动列表效果
Aug 27 Javascript
完美实现js焦点轮播效果(一)
Mar 07 Javascript
ES6中Iterator与for..of..遍历用法分析
Mar 31 Javascript
JS实现的Unicode编码转换操作示例
Apr 28 Javascript
thinkjs 文件上传功能实例代码
Nov 08 Javascript
js+canvas实现滑动拼图验证码功能
Mar 26 Javascript
解决JavaScript中0.1+0.2不等于0.3问题
Oct 23 Javascript
js中Array对象的常用遍历方法详解
Jan 17 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
大师制作的中短波矿石收音机
2020/04/02 无线电
php数组相加 array(“a”)+array(“b”)结果还是array(“a”)
2012/09/19 PHP
TP5多入口设置实例讲解
2020/12/15 PHP
JavaScript多线程的实现方法
2007/05/08 Javascript
Jquery选择子控件&quot;大于号&quot;和&quot; &quot;区别介绍及使用示例
2013/06/25 Javascript
JQuery设置文本框和密码框得到焦点时的样式
2013/08/30 Javascript
教你如何使用PHP输出中文JSON字符串
2014/05/22 Javascript
点击标签切换和自动切换DIV选项卡
2014/08/10 Javascript
Javascript 多物体运动的实现
2014/12/24 Javascript
js实现仿网易点击弹出提示同时背景变暗效果
2015/08/13 Javascript
基于jquery实现动态竖向柱状条特效
2016/02/12 Javascript
jQuery实现点击按钮文字变成input框点击保存变成文字
2016/05/09 Javascript
js检测离开或刷新页面时表单数据是否更改的方法
2016/08/02 Javascript
jquery dataTable 获取某行数据
2017/05/05 jQuery
JS中LocalStorage与SessionStorage五种循序渐进的使用方法
2017/07/12 Javascript
微信小程序自定义底部弹出框
2020/11/16 Javascript
详解vue beforeRouteEnter 异步获取数据给实例问题
2019/08/09 Javascript
js中!和!!的区别与用法
2020/05/09 Javascript
JS如何寻找数组中心索引过程解析
2020/06/01 Javascript
Map与WeakMap类型在JavaScript中的使用详解
2020/11/18 Javascript
[07:20]2018DOTA2国际邀请赛寻真——逐梦Mineski
2018/08/10 DOTA
在Python中处理字符串之ljust()方法的使用简介
2015/05/19 Python
python函数装饰器用法实例详解
2015/06/04 Python
解决python3 网络请求路径包含中文的问题
2018/05/10 Python
利用Django提供的ModelForm增删改数据的方法
2019/01/06 Python
Python3运算符常见用法分析
2020/02/14 Python
PyQt5 文本输入框自动补全QLineEdit的实现示例
2020/05/13 Python
super关键字的用法
2012/04/10 面试题
写一个方法1000的阶乘
2012/11/21 面试题
自我评价正确写法范文
2013/12/10 职场文书
军训鉴定表自我鉴定
2014/02/13 职场文书
镇党政领导班子民主生活会思想汇报
2014/10/11 职场文书
2014小学数学教研组工作总结
2014/12/06 职场文书
2014年银行信贷员工作总结
2014/12/08 职场文书
个人求职自荐信范文
2015/03/06 职场文书
小学生教师节广播稿
2015/08/19 职场文书