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 相关文章推荐
showModelessDialog()使用详解
Sep 21 Javascript
JS 图片缩放效果代码
Jun 09 Javascript
jquery弹出框的用法示例(2)
Aug 26 Javascript
JavaScript中为什么null==0为false而null大于=0为true(个人研究)
Sep 16 Javascript
javascript实用小函数使用介绍
Nov 11 Javascript
基于javascript实现图片懒加载
Jan 05 Javascript
BootStrap下拉菜单和滚动监听插件实现代码
Sep 26 Javascript
完美解决JS文件页面加载时的阻塞问题
Dec 18 Javascript
jquery中绑定事件的异同
Feb 28 Javascript
基于javascript的异步编程实例详解
Apr 10 Javascript
使用jQuery如何写一个含验证码的登录界面
May 13 jQuery
React Native中ScrollView组件轮播图与ListView渲染列表组件用法实例分析
Jan 06 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中的超全局变量
2006/10/09 PHP
java EJB 加密与解密原理的一个例子
2008/01/11 PHP
浅析php变量作用域的一些问题
2013/08/08 PHP
php实现的漂亮分页方法
2014/04/17 PHP
php魔术函数__call()用法实例分析
2015/02/13 PHP
thinkPHP中验证码的简单使用方法
2015/12/26 PHP
PHP5.5迭代生成器用法实例详解
2016/03/16 PHP
详解PHP数据压缩、加解密(pack, unpack)
2016/12/17 PHP
PHP实现的字符串匹配算法示例【sunday算法】
2017/12/19 PHP
jQuery的实现原理的模拟代码 -3 事件处理
2010/08/03 Javascript
Javascript模仿淘宝信用评价实例(附源码)
2015/11/26 Javascript
js HTML5 Ajax实现文件上传进度条功能
2016/02/13 Javascript
纯JavaScript 实现flappy bird小游戏实例代码
2016/09/27 Javascript
js css自定义分页效果
2017/02/24 Javascript
Vue 去除路径中的#号
2018/04/19 Javascript
JavaScript函数节流和函数去抖知识点学习
2018/07/31 Javascript
javascript数据结构之多叉树经典操作示例【创建、添加、遍历、移除等】
2018/08/01 Javascript
vuex actions传递多参数的处理方法
2018/09/18 Javascript
用原生JS实现爱奇艺首页导航栏代码实例
2019/09/19 Javascript
vue 导出文件,携带请求头token操作
2020/09/10 Javascript
[04:11]2014DOTA2国际邀请赛 CIS遗憾出局梦想不灭
2014/07/09 DOTA
Python操作Word批量生成文章的方法
2015/07/28 Python
Python cookbook(数据结构与算法)实现查找两个字典相同点的方法
2018/02/18 Python
pandas通过loc生成新的列方法
2018/11/28 Python
用Python编写一个高效的端口扫描器的方法
2018/12/20 Python
python判断变量是否为列表的方法
2020/09/17 Python
纽约现代艺术博物馆商店:MoMA STORE(室内家具和杂货商品)
2016/08/02 全球购物
Notino罗马尼亚网站:购买香水和化妆品
2019/07/20 全球购物
建筑经济管理专业求职信分享
2014/01/06 职场文书
教师绩效考核方案
2014/01/21 职场文书
大二自我鉴定
2014/01/31 职场文书
统计岗位职责
2014/02/21 职场文书
服装设计师职业生涯规划范文
2014/02/28 职场文书
信用卡工资证明范本
2014/10/17 职场文书
2015年世界无烟日演讲稿
2015/03/18 职场文书
基于Redis过期事件实现订单超时取消
2021/05/08 Redis