首页 > 语言 > JavaScript > 正文

JavaScript面向对象编程小游戏---贪吃蛇代码实例

2024-05-06 15:39:28
字体:
来源:转载
供稿:网友

1 面向对象编程思想在程序项目中有着非常明显的优势:
1- 1 代码可读性高.由于继承的存在,即使改变需求,那么维护也只是在局部模块
1-2 维护非常方便并且成本较低。

​2 这个demo是采用了面向对象的编程思想. 用JavaScript 语言编写的游戏小程序--贪吃蛇.
​ 代码注释详细,逻辑清晰 . 非常适合新手前端开发者, 锻炼JavaScript语言的面向对象的编程思想. 
该小Demo已上传GitHub,欢迎下载!  觉得好的话,随手给个star,  您的star是我最大的动力!

https://github.com/XingJYGo/snakePlay#javascript-经典面向对象demo-贪吃蛇

代码展示:
代码结构:
--index.html 地图页面,展示蛇和食物,进行游戏
--food.js   构造食物对象
--game.js   构造游戏对象
--snake.js   构造蛇对象
--tool.js   常用数据工具封装

--index.html 地图页面

<!DOCTYPE html><html lang="zh-CN"><head> <meta charset="UTF-8"> <title>Title</title> <style>  #map{   width: 500px;   height: 500px;   background-color: lightblue;   position: relative;  }   </style></head><body><div id="map"> </div><button id="btn">模拟蛇吃到食物</button><script src="tool.js"></script><script src="food.js"></script><script src="snake.js"></script><script src="game.js"></script><script> ////==========前后方向设定后 ==================var game = new Game();game.start();   </script> </body></html>

--food.js   构造食物对象

// 封装一个食物对象//沙箱模式(function(){ var container; //用于存储之前的食物 function Food(option) {  //防止用户不传参数会报错  option = option || {};  this.width = option.width || 20;  this.height = option.height || 20;  this.bgc = option.bgc || 'orange';  this.x = option.x || 0;  this.y = option.y || 0;  this.borderRadius = option.borderRadius |10; }  Food.prototype.render = function () {  //每一次渲染新的之前就把原来的移除掉  if(container){   map.removeChild(container);  }  // 创建食物对象  var food = document.createElement('div');  //存到全局变量里  container = food;  food.style.width = this.width + 'px';  food.style.height = this.height + 'px';  food.style.backgroundColor = this.bgc;  food.style.position = 'absolute';   //获得随机位置   //由于要让食物的位置在每一个格子里面,所有获取随机数的算法要重新计算  this.x = Tool.getRandom(0, (map.offsetWidth/ this.width-1)) * this.width;  this.y = Tool.getRandom(0, (map.offsetHeight/ this.height-1)) * this.height;  food.style.left = this.x + 'px';  food.style.top = this.y + 'px';  food.style.borderRadius = this.borderRadius + 'px';  //渲染上食物  map.appendChild(food); }  //因为要在全局使用Food,需要把Food拿到全局中 window.Food = Food;})();            
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

图片精选