JavaScript面向对象怎么实现贪吃蛇游戏
发表于:2025-02-23 作者:千家信息网编辑
千家信息网最后更新 2025年02月23日,本篇内容介绍了"JavaScript面向对象怎么实现贪吃蛇游戏"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学
千家信息网最后更新 2025年02月23日JavaScript面向对象怎么实现贪吃蛇游戏
本篇内容介绍了"JavaScript面向对象怎么实现贪吃蛇游戏"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
1 工具对象(Tools.js)
因为要随机生成食物,所以先将生成min-max范围内随机整数的方法提取出来。randomNum属性就是生成的随机数。
function Tools(min,max){ min = Math.ceil(min); max = Math.floor(max); this.randomNum=Math.floor(Math.random() * (max - min + 1)) + min; //含最大值,含最小值}
2 食物对象(Food.js)
//为避免命名冲突,使用自调用函数(function(){ var foodDivs=[]; //1 定义食物对象 function Food(options){ options=options||{};//封装属性的对象 this.backgroundColor=options.backgroundColor||'green'; this.width=options.width||20; this.height=options.height||20; this.x=options.x||0; this.y=options.y||0; } //2 渲染到map上 Food.prototype.render=function(map){ removeFood(); var div=document.createElement('div'); this.x=new Tools(0,map.offsetWidth/this.width-1).randomNum; this.y=new Tools(0,map.offsetHeight/this.height-1).randomNum; div.style.width=this.width+'px'; div.style.height=this.height+'px'; div.style.backgroundColor=this.backgroundColor; div.style.left=this.x*this.width+'px'; div.style.top=this.y*this.height+'px'; div.style.position = 'absolute'; map.appendChild(div); foodDivs.push(div); } function removeFood(){ for(var i=foodDivs.length-1;i>=0;i--){ foodDivs[i][xss_clean].removeChild(foodDivs[i]);//先从页面删除 foodDivs.splice(i,1);//删除指定位置元素 //再从数组实际删除 } } window.Food=Food;//暴露Food,外部才能访问})();
3 蛇对象(Snake.js)
(function(){ var snakeDivs=[]; //1 蛇构造函数 function Snake(options){ options=options||{}; this.body=[ {x:3,y:2,bgc:'red'}, {x:2,y:2,bgc:'blue'}, {x:1,y:2,bgc:'blue'} ]; this.width=options.width||20; this.height=options.height||20; this.direction=options.direction||'right'; } //2 渲染到map上 Snake.prototype.render=function(map){ removeSnake(); for(var i=0;i0;i--){ this.body[i].x=this.body[i-1].x; this.body[i].y=this.body[i-1].y; } //蛇头移动 var head=this.body[0]; switch(this.direction){ case 'left': head.x-=1; break; case 'up': head.y-=1; break; case 'right': head.x+=1; break; case 'down': head.y+=1; break; } if(head.x===food.x&&head.y===food.y){//蛇头与食物重合 var last=this.body[this.body.length-1]; this.body.push({ x:last.x, y:last.y, bgc:last.bgc }); food.render(map);//这里就包括移除前面的食物这一操作 } } function removeSnake(){ for(var i=snakeDivs.length-1;i>=0;i--){ snakeDivs[i][xss_clean].removeChild(snakeDivs[i]);//先从页面删除 snakeDivs.splice(i,1);//删除指定位置元素 //再从数组实际删除 } } window.Snake=Snake;})();
4 游戏对象(Game.js)
主要是控制游戏的开始,以及按键对应的行为在游戏中的含义,将蛇和食物这两个对象组织在一起。
(function(){var that; function Game(){ this.food=new Food(); this.snake=new Snake(); that=this; } Game.prototype.start=function(map){ this.snake.render(map); this.food.render(map); var head=this.snake.body[0]; var span=document.getElementById('tag'); var timerId=setInterval(function(){ that.snake.move(that.food,map); that.snake.render(map); if((head.x>map.offsetWidth/that.snake.width-2)||head.x<=0){ clearInterval(timerId); span.style.display='block';//提示Game Over } if((head.y>map.offsetHeight/that.snake.height-2)||head.y<=0){ clearInterval(timerId); span.style.display='block';//提示Game Over } },150); console.log(map.offsetWidth/this.snake.width-1); bindKey();}function bindKey(){ document.addEventListener('keydown',function(e){ switch(e.keyCode){//left 37 up 38 right 39 down 40 case 37: that.snake.direction='left'; break; case 38: that.snake.direction='up'; break; case 39: that.snake.direction='right'; break; case 40: that.snake.direction='down'; break; } });}window.Game=Game;})()var Game=new Game();var map=document.getElementById('map');Game.start(map);
5 index.html
显示的html页面
Page Title Game Over
6 运行界面
"JavaScript面向对象怎么实现贪吃蛇游戏"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!
对象
食物
实际
页面
生成
位置
元素
内容
函数
属性
数组
更多
知识
蛇头
实用
最大
最小
学有所成
接下来
两个
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
网络技术人员保密协议书
无锡联想服务器维修费用
小米路由迷你cups服务器
mysql数据库版本控制
网络安全文明举报
上海常用软件开发预算
无代码软件开发平台哪个好用
数据库查询数据行数
sata如何接服务器
服务器虚拟化推广哪家好
地平线4微软服务器太差了吧
西南交大网络安全接受调剂
大学生电脑数据库建设
网络安全靶机下载
新希望网络技术开发有限公司
网络安全读后感100字
检察 网络安全管理制度
路由器的服务器在哪
农村网络安全宣传照片
蒂森克虎伯服务器
嘉定区企业软件开发怎么样
阿里云服务器默认登录地址
承梅网络技术服务工作室
一等奖 网络安全课
推进网贷征信数据库建设
网络安全及解决方案
软件开发创新策划
互联网属于科技领域吗
部门属性数据库设计
辽宁易道互联网科技