JS制作简易版贪吃蛇小游戏的案例

  介绍

这篇文章主要介绍了JS制作简易版贪吃蛇小游戏的案例,具有一定借鉴价值,需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获。下面让小编带着大家一起了解一下。

& lt; !DOCTYPE html公众“-//W3C XHTML 1.0 Strict////DTD EN"“http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"比;   & lt; html>   & lt; head>   & lt; title>新建网页& lt;/title>   & lt;元http-equiv=癈ontent-Type"内容=皌ext/html;charset=utf-8"/比;   & lt;元名称=癲escription"内容=啊?比;   & lt;元名称=発eywords"内容=啊?比;      & lt;脚本类型=拔谋?javascript"比;//①绘制地图   函数映射(){//私有成员(不会随便发生变化)   var w=800;   var h=400;//成员方法,绘制地图   这一点。showmap=function () {//创建p,设置css样式,追加给身体   var你=document.createElement (& # 39; p # 39;);      tu.style。宽度=w +“px";   tu.style。身高=h +“px";   tu.style。backgroundImage=皍rl (/12. jpg)“;      document.body.appendChild (tu);   }   }//②绘制食物   功能食品(){   var len=20;//把食物(权值)坐标声明为公开的,以便在外部访问   这一点。xFood=0;   这一点。yFood=0;   这一点。块=零;//页面上唯一的食物对象//绘制   这一点。showfood=function () {//创建p,设置css样式,追加给身体   如果这一点。块===null) {   这一点。块=document.createElement (& # 39; p # 39;);   this.piece.style。宽度=this.piece.style。身高=len +“px";   this.piece.style。写成backgroundColor=癵reen";   this.piece.style。位置=癮bsolute";      document.body.appendChild (this.piece);   }//食物设置绝对定位(位置/左/上)//食物位置“随机”摆放//移动步进值:20 px//食物”权值“坐标:X轴(0-39)Y轴(0-19)//食物真实坐标:权值坐标*步进值   这一点。xFood=Math.floor (math . random () * 40);//0-39的随机数   这一点。yFood=Math.floor (math . random () * 20);//0-19的随机数      this.piece.style。离开了=Food * len +“px";   this.piece.style。=这。yFood * len +“px";      }   }//③小蛇   函数蛇(){   var len=20;   这一点。重定向=皉ight";//默认向右边移动//后期snakebody要变化,因此声明为公开的(每个蛇节:[x坐标,y坐标,颜色,蛇节对象])   这一点。snakebody=[[0 1 & # 39;绿色# 39;,null],[1 1 & # 39;绿色# 39;,null),(2, 1, & # 39;绿色# 39;,null],[3 1 & # 39;红色# 39;,null]];//a。绘制小蛇   这一点。showsnake=function () {//遍历小蛇的各个蛇节,并依次创建即可   (var=0;我& lt;this.snakebody.length;我+ +){//this.snakebody[我]//代表每个蛇节//创建蛇节p   如果这一点。snakebody[我][3]===null){//判断没有创建对应的蛇节   这一点。snakebody[我][3]=document.createElement (& # 39; p # 39;);//设置css样式(宽度,高度,颜色)   this.snakebody[我][3].style。宽度=this.snakebody[我][3].style。身高=len +“px";   this.snakebody[我][3].style。写成backgroundColor=this.snakebody[我][2];//绝对定位及位置   this.snakebody[我][3].style。位置=癮bsolute";//把蛇节追加给身体   document.body.appendChild (this.snakebody[我][3]);   }   this.snakebody[我][3].style。离开了=nakebody[我][0]* len +“px";   this.snakebody[我][3].style。=这。snakebody[我][1]* len +“px";   }   }//b。移动小蛇   这一点。movesnake=function () {//非蛇头蛇节(当前蛇节的新坐标是“下个蛇节“的旧坐标)   (var=0;我& lt;this.snakebody。长度- 1;我+ +){   这一点。snakebody[我][0]=nakebody [i + 1] [0];   这一点。snakebody[我][1]=nakebody [i + 1] [1];   }   如果这一点。重定向==皉ight") {//蛇头x坐标递增   this.snakebody [this.snakebody。长度- 1][0]+=1;   }   如果这一点。重定向==發eft") {//蛇头x坐标递减   this.snakebody [this.snakebody。长度- 1][0]=1;   }   如果这一点。重定向==皍p") {//蛇头y坐标递减   this.snakebody [this.snakebody。长度- 1][1]=1;   }   如果这一点。重定向==癲own") {//蛇头y坐标递增   this.snakebody [this.snakebody。长度- 1][1]+=1;   }//判断蛇头碰到食物//蛇头坐标   var xSnake=this.snakebody [this.snakebody。长度- 1][0];   var ySnake=this.snakebody [this.snakebody。长度- 1][1];//食物坐标food.xFood/food.yFood;   如果(xSnake==食物。xFood,,ySnake==food.yFood) {//吃食物增加蛇节   var newjie=[这。snakebody[0][0],这。snakebody[0][1], & # 39;绿色# 39;,null];   this.snakebody.unshift (newjie);//把newjie放到数组的第一个位置去//原食物消失,重新生成一个食物   food.showfood ();   }//控制小蛇在地图范围内移动   如果(xSnake & lt;0 | | xSnake祝辞39 | | ySnake & lt;0 | | ySnake祝辞19){   警报(& # 39;游戏在# 39;);   clearInterval (mytime);   返回错误;   }//吃到自己判断(蛇头坐标与其他蛇节坐标一致)   (var k=0;k & lt;this.snakebody。长度- 1;k + +) {   如果这一点。snakebody [k] [0]==xSnake,,这一点。snakebody [k] [1]==ySnake) {   警报(& # 39;游戏结束杀死你自己# 39;);   clearInterval (mytime);   返回错误;   }   }//根据新坐标绘制小蛇   this.showsnake ();   }   }      窗口。onload=function () {   var=新地图地图();   map.showmap ();      食物=new();//声明为全局的以便在该加载事件函数外部访问   food.showfood ();      蛇蛇=new();//声明为全局的蛇对象   snake.showsnake ();//移动小蛇//setInterval(全局变量,时间)   mytime=setInterval (“snake.movesnake ()“, 200);//设置键盘事件,控制器小蛇移动方向   文档。onkeydown=function (evt) {   var num=evt.keyCode;//通过事件对象获得数值码,进而知道被触发键子   如果(num==38) {   蛇。重定向=皍p";   }   如果(num==40) {   蛇。重定向=癲own";   }   如果(num==37) {   蛇。重定向=發eft";   }   如果(num==39) {   蛇。重定向=皉ight";   }   }   }   & lt;/script>      & lt;风格类型=拔谋?css"比;   身体{   保证金:0;   }   & lt;/style>   & lt;/head>   & lt; body> & lt;/body>   & lt;/html>

JS制作简易版贪吃蛇小游戏的案例