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数据包含加号+通过ajax传到后台时出现连接错误
Aug 01 Javascript
javascript:文字不间断向左移动的实例代码
Aug 08 Javascript
js setTimeout 参数传递使用介绍
Aug 13 Javascript
JS将光标聚焦在文本最后的实现代码
Mar 28 Javascript
JS网页在线获取鼠标坐标值的方法
Feb 28 Javascript
CSS图片响应式 垂直水平居中
Aug 14 Javascript
jQuery实现动态文字搜索功能
Jan 05 Javascript
Angular2学习教程之组件中的DOM操作详解
May 28 Javascript
vue2.0路由切换后页面滚动位置不变BUG的解决方法
Mar 14 Javascript
vue视频播放暂停代码
Nov 08 Javascript
js实现坦克大战游戏
Feb 24 Javascript
js函数柯里化的方法和作用实例分析
Apr 11 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(4) php 函数 补充2
2010/02/15 PHP
Thinkphp和onethink实现微信支付插件
2016/04/13 PHP
php中文字符串截取多种方法汇总
2016/10/06 PHP
thinkphp5.1 文件引入路径问题及注意事项
2018/06/13 PHP
Javascript学习笔记7 原型链的原理
2010/01/11 Javascript
jQuery(1.6.3) 中css方法对浮动的实现缺陷分析
2011/09/09 Javascript
javascript:void(0)是什么意思示例介绍
2013/11/17 Javascript
纯js实现div内图片自适应大小(已测试,兼容火狐)
2014/06/16 Javascript
JavaScript返回0-1之间随机数的方法
2015/04/06 Javascript
jQuery判断是否存在滚动条的简单方法
2016/09/17 Javascript
微信小程序 简单DEMO布局,逻辑,样式的练习
2016/11/30 Javascript
AngularJS 在同一个界面启动多个ng-app应用模块详解
2016/12/20 Javascript
原生js实现轮播图
2017/02/27 Javascript
angular十大常见问题
2017/03/07 Javascript
前端跨域的几种解决方式总结(推荐)
2017/08/16 Javascript
微信小程序实现二维码签到考勤系统
2020/01/16 Javascript
Vue + element 实现多选框组并保存已选id集合的示例代码
2020/06/03 Javascript
Python使用稀疏矩阵节省内存实例
2014/06/27 Python
python根据给定文件返回文件名和扩展名的方法
2015/03/27 Python
如何处理Python3.4 使用pymssql 乱码问题
2016/01/08 Python
python自动化脚本安装指定版本python环境详解
2017/09/14 Python
Python之lambda匿名函数及map和filter的用法
2019/03/05 Python
Python pickle模块实现对象序列化
2019/11/22 Python
Python包资源下载路径报404解决方案
2020/11/05 Python
英国领先的电动可调床制造商:Laybrook
2019/12/26 全球购物
Cecil Mode法国在线商店:女性时尚
2021/01/08 全球购物
你们项目是如何进行变更控制的
2015/08/26 面试题
精细化工应届生求职信
2013/11/17 职场文书
寄语是什么意思
2014/04/10 职场文书
关爱留守儿童标语
2014/06/18 职场文书
医院领导班子四风对照检查材料
2014/09/27 职场文书
大四学生个人总结
2015/02/15 职场文书
2015年英语教师工作总结
2015/05/20 职场文书
电影建党伟业观后感
2015/06/01 职场文书
用JS实现飞机大战小游戏
2021/06/09 Javascript
手把手教你导入Go语言第三方库
2021/08/04 Golang