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 相关文章推荐
表单提交验证类
Jul 14 Javascript
IE6已终止操作问题的2种情况及解决
Apr 23 Javascript
php读取sqlite数据库入门实例代码
Jun 25 Javascript
js实现网页随机切换背景图片的方法
Nov 01 Javascript
Javascript中获取对象的原型对象的方法小结
Feb 25 Javascript
javascript实现的简单的表单验证
Jul 10 Javascript
理解javascript定时器中的单线程
Feb 23 Javascript
js防阻塞加载的实现方法
Sep 09 Javascript
Vue.js实例方法之生命周期详解
Jul 03 Javascript
纯js实现页面返回顶部的动画(超简单)
Aug 10 Javascript
JS+DIV实现拖动效果
Feb 11 Javascript
在vue中获取wangeditor的html和text的操作
Oct 23 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时间和日期函数详解
2015/05/08 PHP
php实现网站留言板功能
2015/11/04 PHP
document.compatMode介绍
2009/05/21 Javascript
Eval and new funciton not the same thing
2012/12/27 Javascript
简单的js图片轮换代码(js图片轮播)
2014/05/06 Javascript
jquery中change()用法实例分析
2015/02/06 Javascript
Javascript实现div层渐隐效果的方法
2015/05/30 Javascript
javascript实现类似于新浪微博搜索框弹出效果的方法
2015/07/27 Javascript
浅析jquery数组删除指定元素的方法:grep()
2016/05/19 Javascript
JavaScript编程中实现对象封装特性的实例讲解
2016/06/24 Javascript
JS实现下拉菜单列表与登录注册弹窗效果
2017/08/10 Javascript
从parcel.js打包出错到选择nvm的全部过程
2018/01/23 Javascript
微信小程序wx:for和wx:for-item的用法详解
2018/04/01 Javascript
不使用JavaScript实现菜单的打开和关闭效果demo
2018/05/01 Javascript
详解使用create-react-app快速构建React开发环境
2018/05/16 Javascript
基于jQuery使用Ajax动态执行模糊查询功能
2018/07/05 jQuery
Smartour 让网页导览变得更简单(推荐)
2019/07/19 Javascript
[17:13]DOTA2 HEROS教学视频教你分分钟做大人-斯拉克
2014/06/13 DOTA
Django中Forms的使用代码解析
2018/02/10 Python
TensorFlow模型保存/载入的两种方法
2018/03/08 Python
Python入门学习指南分享
2018/04/11 Python
使用实现pandas读取csv文件指定的前几行
2018/04/20 Python
解决python3运行selenium下HTMLTestRunner报错的问题
2018/12/27 Python
python3 深浅copy对比详解
2019/08/12 Python
详解Python 中sys.stdin.readline()的用法
2019/09/12 Python
Python实现遗传算法(二进制编码)求函数最优值方式
2020/02/11 Python
Python根据字典的值查询出对应的键的方法
2020/09/30 Python
Python约瑟夫生者死者小游戏实例讲解
2021/01/04 Python
纯CSS3打造属于自己的“小黄人”
2016/03/14 HTML / CSS
ProForm英国站点:健身房和健身器材网上商店
2019/06/05 全球购物
Bluebella德国官网:英国性感内衣和睡衣品牌
2019/11/08 全球购物
简述网络文件系统NFS,并说明其作用
2016/10/19 面试题
《小小雨点》教学反思
2014/02/18 职场文书
大班幼儿评语大全
2014/04/30 职场文书
放假通知
2015/04/14 职场文书
css filter和getUserMedia的联合使用
2022/02/24 HTML / CSS