JavaScript面向对象怎么实现贪吃蛇游戏
发表于:2025-11-06 作者:千家信息网编辑
千家信息网最后更新 2025年11月06日,本篇内容介绍了"JavaScript面向对象怎么实现贪吃蛇游戏"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学
千家信息网最后更新 2025年11月06日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安全错误
数据库的锁怎样保障安全
软件数据库怎么复制粘贴
PHP数据库连接池实现
宝鸡软件开发解决方案
数据库中表格的字段名的更改
对标技术数据库
网络安全实训室管理制度
软件开发us文档
时序数据库 非关系
大型网络服务器在海里
图表怎么调整数据库
GTA服务器群组怎样单人玩
天津和平区三品云科技软件开发
网络安全四个坚持心得
博兴专业软件开发价格
软件开发的职责
服务器运营商查询
业务建模 软件开发
数据库恢复技术建立索引
网络安全视频英语
网络安全bmc
在公司怎么写申请给服务器加盘
海智网聚网络技术公司怎么样
沁阳服务器
数据库视图 安全的角度
手机访问本地服务器
国有四大行核心数据库
网络安全蔡立军
天空互联网科技怎么样
网络安全法一般是哪一年颁布的
公司内部代码管理服务器