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 相关文章推荐
textarea 控制输入字符字节数(示例代码)
Dec 27 Javascript
通过node-mysql搭建Windows+Node.js+MySQL环境的教程
Mar 01 Javascript
js动态添加的DIV中的onclick事件简单实例
Jul 25 Javascript
如何实现星星评价(jquery.raty.js插件)
Dec 21 Javascript
判断横屏竖屏(三种)
Feb 13 Javascript
Webpack+Vue如何导入Jquery和Jquery的第三方插件
Feb 20 Javascript
3分钟掌握常用的JS操作JSON方法总结
Apr 25 Javascript
Angular.js 4.x中表单Template-Driven Forms详解
Apr 25 Javascript
Layui多选只有最后一个值的解决方法
Sep 02 Javascript
JS端基于download.js实现图片、视频时直接下载而不是打开预览
May 09 Javascript
解决vue 使用axios.all()方法发起多个请求控制台报错的问题
Nov 09 Javascript
JS + HTML 罗盘式时钟的实现
May 21 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/03/04 星际争霸
ThinkPHP让分页保持搜索状态的方法
2014/07/02 PHP
php自定义apk安装包实例
2014/10/20 PHP
php将数组存储为文本文件方法汇总
2015/10/28 PHP
关于php中一些字符串总结
2016/05/05 PHP
利用PHP如何统计Nginx日志的User Agent数据
2019/03/06 PHP
JavaScript 图像动画的小demo
2012/05/23 Javascript
解析DHTML,JavaScript,DOM,BOM以及WEB标准的描述
2013/06/19 Javascript
通过javascript获取iframe里的值示例代码
2013/06/24 Javascript
JS和Jquery获取和修改label的值的示例代码
2014/01/15 Javascript
详解Javascript动态操作CSS
2014/12/08 Javascript
jQuery中dequeue()方法用法实例
2014/12/29 Javascript
理解JavaScript中Promise的使用
2016/01/18 Javascript
ajax与json 获取数据并在前台使用简单实例
2017/01/19 Javascript
jQuery Easyui Treegrid实现显示checkbox功能
2017/08/08 jQuery
解决VUEX兼容IE上的报错问题
2018/03/01 Javascript
jQuery实现当拉动滚动条到底部加载数据的方法分析
2019/01/24 jQuery
nodejs中实现用户注册路由功能
2019/05/20 NodeJs
Python中类型关系和继承关系实例详解
2015/05/25 Python
深入理解python中的闭包和装饰器
2016/06/12 Python
快速入手Python字符编码
2016/08/03 Python
PyQT5 emit 和 connect的用法详解
2019/12/13 Python
Python pip install如何修改默认下载路径
2020/04/29 Python
浅谈pytorch中的BN层的注意事项
2020/06/23 Python
浅谈html5之sse服务器发送事件EventSource介绍
2017/08/28 HTML / CSS
匈牙利最大的健身制造商和销售商:inSPORTline
2018/10/30 全球购物
美国相机和电子产品零售商:Beach Camera
2020/11/26 全球购物
测绘工程专业个人自我评价
2013/12/01 职场文书
购房协议书
2014/04/11 职场文书
客运企业隐患排查工作方案
2014/06/06 职场文书
优秀员工评优方案
2014/06/13 职场文书
保险公司开门红口号
2014/06/21 职场文书
房屋认购协议书
2015/01/29 职场文书
国庆节慰问信
2015/02/15 职场文书
科技活动总结范文
2015/05/11 职场文书
2019年特色火锅店的创业计划书模板
2019/08/28 职场文书