javascript实现贪吃蛇游戏

本贴最后更新于 2504 天前,其中的信息可能已经事过境迁

一、截图

二、代码

<script type="text/javascript" src="jquery-1.7.1.js"></script> <style type="text/css"> #map{width:700px; height:600px; border:0px solid #CCC; overflow:hidden;} .maps{width:10px; height:10px; float:left; overflow:hidden;border:1px solid red;} .back{background:black;} .worm{background:blue;} </style> <script type="text/javascript"> // 定时器 var gameInt // 定义方格 function Box(x,y){ this.x = x; this.y = y; } // 初始方向 var direction = 2;//1:东-右-39 2:南-下-40 3:西-左-37 4:北-上-38 37左键 38上建 39右键 下键40 // 定时器 var gameInt // 定义方格 function Box(x,y){ this.x = x; this.y = y; } // 初始方向 var direction = 2;//1:东-右-39 2:南-下-40 3:西-左-37 4:北-上-38 37左键 38上建 39右键 下键40 // 初始蛇 var snakeArr = [new Box(1,2),new Box(1,3),new Box(1,4),new Box(2,4),new Box(3,4),new Box(4,4),new Box(5,4),new Box(6,4)]; // 蛇头 var headBox = snakeArr[snakeArr.length-1]; // 虫子 var worm ; // 初始化地图 function initMap(){ for(var i=1;i&lt;=50;i++){ for(var j=1;j&lt;=50;j++){ $(&quot;&lt;div id=map_&quot;+i+&quot;_&quot;+j+&quot; class='maps'&gt;&lt;/div&gt;&quot;).appendTo($('#map')); if(j==50){ $('&lt;div style=&quot;clear:both;&quot;&gt;&lt;/div&gt;').appendTo($('#map')); } } } } // 绘制蛇 function drawSnake(){ for(var i=0;i&lt;snakeArr.length;i++){ var box = snakeArr[i]; $(&quot;#map_&quot;+box.x+&quot;_&quot;+box.y).addClass('back'); } } // 清楚蛇 function clearSnake(){ for(var i=0;i&lt;snakeArr.length;i++){ var box = snakeArr[i]; $(&quot;#map_&quot;+box.x+&quot;_&quot;+box.y).removeClass('back'); } } // 绘制虫子 function drawWorm(){ do{ var x = Math.round(Math.random()*(50-1)); var y = Math.round(Math.random()*(50-1)); worm = new Box(x,y); }while(isInSnake(worm)); //worm = new Box(x,y); $(&quot;#map_&quot;+worm.x+&quot;_&quot;+worm.y).addClass('worm'); } // 清除虫子 function clearWorm(){ $(&quot;#map_&quot;+worm.x+&quot;_&quot;+worm.y).removeClass('worm'); } // 判断蛇方格中是否存在该方格 function isInSnake(worm){ var result = false; for(var i=0;i&lt;snakeArr.length;i++){ var box = snakeArr[i]; if(worm.x == box.x &amp;&amp; worm.y == box.y){ result = true; break; } } return result; } /* 1、清除原有蛇 2、计算新蛇头的位置 3、判断新蛇头是否碰到边界 是则结束游戏 4、判断新蛇头是否碰到自己 是则结束游戏 5、判断蛇是否碰到虫子 是则吃掉该虫子 产生一个新虫子 6、重新绘制蛇 */ function forward(){ // 清除原有蛇 clearSnake(); // 计算新蛇头的位置 switch (direction){ case 1: headBox = new Box(headBox.x,headBox.y+1); break; case 2: headBox = new Box(headBox.x+1,headBox.y); break; case 3: headBox = new Box(headBox.x,headBox.y-1); break; case 4: headBox = new Box(headBox.x-1,headBox.y); break; } // 判断新蛇头是否碰到边界 if(headBox.x&lt;1 || headBox.x &gt; 50 || headBox.y&lt;1 || headBox.y &gt; 50){ clearInterval(gameInt); alert(&quot;game over!&quot;); //return; } // 判断新蛇头是否碰到自己 if(isInSnake(headBox)){ clearInterval(gameInt); alert(&quot;game over!&quot;); //return; } // 判断蛇是否碰到虫子 if(headBox.x == worm.x &amp;&amp; headBox.y == worm.y){ clearWorm(); drawWorm(); }else{ snakeArr.shift(); } snakeArr.push(headBox); // 重新绘制蛇 drawSnake(); } $(function(){ // 初始化地图 initMap(); // 初始化蛇 drawSnake(); // 初始化虫子 drawWorm(); // 启动定时器 gameInt = setInterval(function(){ forward(); },200); // 监听键盘方向键 根据方向键确定蛇的前进方向 $(document).keydown(function(e){ switch(e.which){ case 37: if(direction!=1){ direction = 3; } break; case 38: if(direction!=2){ direction = 4; } break; case 39: if(direction!=3){ direction = 1; } break; case 40: if(direction!=4){ direction = 2; } break; } }); }); </script> <div id="map"></div>
  • 编程
    52 引用 • 257 回帖 • 3 关注
  • 游戏

    沉迷游戏伤身,强撸灰飞烟灭。

    188 引用 • 833 回帖
  • JavaScript

    JavaScript 一种动态类型、弱类型、基于原型的直译式脚本语言,内置支持类型。它的解释器被称为 JavaScript 引擎,为浏览器的一部分,广泛用于客户端的脚本语言,最早是在 HTML 网页上使用,用来给 HTML 网页增加动态功能。

    733 引用 • 1288 回帖 • 1 关注

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...

推荐标签 标签

  • 域名

    域名(Domain Name),简称域名、网域,是由一串用点分隔的名字组成的 Internet 上某一台计算机或计算机组的名称,用于在数据传输时标识计算机的电子方位(有时也指地理位置)。

    43 引用 • 208 回帖
  • 大数据

    大数据(big data)是指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合,是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产。

    91 引用 • 113 回帖
  • 分享

    有什么新发现就分享给大家吧!

    250 引用 • 1799 回帖
  • InfluxDB

    InfluxDB 是一个开源的没有外部依赖的时间序列数据库。适用于记录度量,事件及实时分析。

    2 引用 • 120 关注
  • CentOS

    CentOS(Community Enterprise Operating System)是 Linux 发行版之一,它是来自于 Red Hat Enterprise Linux 依照开放源代码规定释出的源代码所编译而成。由于出自同样的源代码,因此有些要求高度稳定的服务器以 CentOS 替代商业版的 Red Hat Enterprise Linux 使用。两者的不同在于 CentOS 并不包含封闭源代码软件。

    240 引用 • 224 回帖 • 1 关注
  • 微服务

    微服务架构是一种架构模式,它提倡将单一应用划分成一组小的服务。服务之间互相协调,互相配合,为用户提供最终价值。每个服务运行在独立的进程中。服务于服务之间才用轻量级的通信机制互相沟通。每个服务都围绕着具体业务构建,能够被独立的部署。

    97 引用 • 155 回帖
  • 微信

    腾讯公司 2011 年 1 月 21 日推出的一款手机通讯软件。用户可以通过摇一摇、搜索号码、扫描二维码等添加好友和关注公众平台,同时可以将自己看到的精彩内容分享到微信朋友圈。

    135 引用 • 798 回帖
  • Office

    Office 现已更名为 Microsoft 365. Microsoft 365 将高级 Office 应用(如 Word、Excel 和 PowerPoint)与 1 TB 的 OneDrive 云存储空间、高级安全性等结合在一起,可帮助你在任何设备上完成操作。

    6 引用 • 35 回帖
  • 面试

    面试造航母,上班拧螺丝。多面试,少加班。

    327 引用 • 1395 回帖
  • 区块链

    区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。所谓共识机制是区块链系统中实现不同节点之间建立信任、获取权益的数学算法 。

    92 引用 • 752 回帖
  • AWS
    11 引用 • 28 回帖 • 1 关注
  • 持续集成

    持续集成(Continuous Integration)是一种软件开发实践,即团队开发成员经常集成他们的工作,通过每个成员每天至少集成一次,也就意味着每天可能会发生多次集成。每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽早地发现集成错误。

    15 引用 • 7 回帖
  • Windows

    Microsoft Windows 是美国微软公司研发的一套操作系统,它问世于 1985 年,起初仅仅是 Microsoft-DOS 模拟环境,后续的系统版本由于微软不断的更新升级,不但易用,也慢慢的成为家家户户人们最喜爱的操作系统。

    232 引用 • 484 回帖 • 2 关注
  • 尊园地产

    昆明尊园房地产经纪有限公司,即:Kunming Zunyuan Property Agency Company Limited(简称“尊园地产”)于 2007 年 6 月开始筹备,2007 年 8 月 18 日正式成立,注册资本 200 万元,公司性质为股份经纪有限公司,主营业务为:代租、代售、代办产权过户、办理银行按揭、担保、抵押、评估等。

    1 引用 • 22 回帖 • 827 关注
  • JSON

    JSON (JavaScript Object Notation)是一种轻量级的数据交换格式。易于人类阅读和编写。同时也易于机器解析和生成。

    53 引用 • 190 回帖
  • etcd

    etcd 是一个分布式、高可用的 key-value 数据存储,专门用于在分布式系统中保存关键数据。

    6 引用 • 26 回帖 • 554 关注
  • OpenCV
    15 引用 • 36 回帖 • 4 关注
  • 前端

    前端技术一般分为前端设计和前端开发,前端设计可以理解为网站的视觉设计,前端开发则是网站的前台代码实现,包括 HTML、CSS 以及 JavaScript 等。

    247 引用 • 1340 回帖 • 1 关注
  • Facebook

    Facebook 是一个联系朋友的社交工具。大家可以通过它和朋友、同事、同学以及周围的人保持互动交流,分享无限上传的图片,发布链接和视频,更可以增进对朋友的了解。

    4 引用 • 15 回帖 • 441 关注
  • 运维

    互联网运维工作,以服务为中心,以稳定、安全、高效为三个基本点,确保公司的互联网业务能够 7×24 小时为用户提供高质量的服务。

    151 引用 • 257 回帖 • 2 关注
  • V2Ray
    1 引用 • 15 回帖 • 1 关注
  • Angular

    AngularAngularJS 的新版本。

    26 引用 • 66 回帖 • 576 关注
  • Typecho

    Typecho 是一款博客程序,它在 GPLv2 许可证下发行,基于 PHP 构建,可以运行在各种平台上,支持多种数据库(MySQL、PostgreSQL、SQLite)。

    12 引用 • 67 回帖 • 445 关注
  • HHKB

    HHKB 是富士通的 Happy Hacking 系列电容键盘。电容键盘即无接点静电电容式键盘(Capacitive Keyboard)。

    5 引用 • 74 回帖 • 534 关注
  • Visio
    1 引用 • 2 回帖 • 5 关注
  • Sphinx

    Sphinx 是一个基于 SQL 的全文检索引擎,可以结合 MySQL、PostgreSQL 做全文搜索,它可以提供比数据库本身更专业的搜索功能,使得应用程序更容易实现专业化的全文检索。

    1 引用 • 247 关注
  • OpenResty

    OpenResty 是一个基于 NGINX 与 Lua 的高性能 Web 平台,其内部集成了大量精良的 Lua 库、第三方模块以及大多数的依赖项。用于方便地搭建能够处理超高并发、扩展性极高的动态 Web 应用、Web 服务和动态网关。

    17 引用 • 52 关注