时间:2021-05-25
本文实例为大家分享了JS实现贪吃蛇小游戏的具体代码,供大家参考,具体内容如下
思路:在页面上添加一个地图,以提供边界,在地图中随机出现食物,给蛇身设置一个初始长度,用键盘方向键控制蛇的走向,当蛇触碰到食物时(既坐标重复时),增加蛇身长度,碰到墙壁或自身时,程序停止,游戏结束。
HTML结构:
<body> <div id="map"></div></body>CSS样式:
<style> #map{ width: 600px; height: 300px; background: #ccc; border: 5px solid blacks; margin: 0 auto; position: relative;}</style>js实现功能:
<script> class Map{ //地图 constructor(){ this.mapEle = document.getElementById("map"); this.w = this.mapEle.offsetWidth; this.h = this.mapEle.offsetHeight; } } class Food{ //食物 constructor(){ this.w = 20; this.h = 20; this.x = 0; this.y = 0; this.c = "orange"; this.createEle(); } createEle(){ this.foodEle = document.createElement("div"); this.foodEle.style.cssText = `width:${this.w}px;height:${this.h}px;background:${this.c};position:absolute;left:${this.x * this.w}px;top:${this.y * this.h}px;border-radius: 40%;`; m.mapEle.appendChild(this.foodEle); } randomPos(){ this.x = random(0,(m.w-this.w) / this.w); this.y = random(0,(m.h-this.h) / this.h); this.foodEle.style.left = this.x * this.w + "px"; this.foodEle.style.top = this.y * this.h + "px"; } } class Snake{ //身体 constructor(){ this.w = 20; this.h = 20; this.body = [{ ele:null,x:4,y:3,c:randomColor() },{ ele:null,x:3,y:3,c:randomColor() },{ ele:null,x:2,y:3,c:randomColor() }]; this.d = "right"; //设置默认行走方向 this.createEle(); } createEle(){ for(var i=0;i<this.body.length;i++){ if(!this.body[i].ele){ this.body[i].ele = document.createElement("div"); m.mapEle.appendChild(this.body[i].ele); } this.body[i].ele.style.cssText = `width:${this.w}px;height:${this.h}px;background:${this.body[i].c};position:absolute;left:${this.body[i].x * this.w}px;top:${this.body[i].y * this.h}px;color:#fff;border-radius: 40%;`; } this.body[0].ele.innerHTML = "00" setTimeout(()=>{this.move()},300); } move(){ for(var i=this.body.length-1;i>0;i--){ this.body[i].x = this.body[i-1].x; this.body[i].y = this.body[i-1].y; } switch(this.d){ case "left":this.body[0].x -= 1;break; case "right":this.body[0].x += 1;break; case "top":this.body[0].y -= 1;break; case "bottom":this.body[0].y += 1;break; } if(this.body[0].x < 0 || this.body[0].y < 0 || this.body[0].x > ((m.w-this.w) / this.w) || this.body[0].y > ((m.h-this.h) / this.h)){ alert("撞墙了"); return; } if(this.body[0].x === f.x && this.body[0].y === f.y){ this.body.push({ele:null,x:this.body[this.body.length-1].x,y:this.body[this.body.length-1].y,c:randomColor()}); f.randomPos(); } for(var i=1;i<this.body.length;i++){ if(this.body[0].x == this.body[i].x && this.body[0].y == this.body[i].y){ alert("撞到自己了"); return; } } this.createEle(); } direct(type){ switch(type){ case 37: if(this.d === "right") break; this.d = "left";break; case 38: if(this.d === "bottom") break; this.d = "top";break; case 39: if(this.d === "left") break; this.d = "right";break; case 40: if(this.d === "top") break; this.d = "bottom";break; } } } function random(a,b){ return Math.round(Math.random()*(a-b)+b); } function randomColor(){ return `rgb(${random(0,255)},${random(0,255)},${random(0,255)})`; } var m = new Map(); var f = new Food(); f.randomPos(); var s = new Snake(); document.onkeydown = function(eve){ var e = eve || window.event; var code = e.keyCode || e.which; s.direct(code); }</script>小编还为大家准备了精彩的专题:javascript经典小游戏汇总
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
使用原生js实现贪吃蛇小游戏,首先这个小游戏的目录结构如下:有贪吃蛇,食物,地图,还有游戏当我们在浏览器打开index.html的时候,会出现移动的小蛇,随机生
本文实例为大家分享了Javascript实现贪吃蛇小游戏的具体代码,供大家参考,具体内容如下前言原生JavaScript实现贪吃蛇小游戏GitHub地址直接复制
本文实例讲述了原生js实现的贪吃蛇网页版游戏。分享给大家供大家参考。具体实现方法如下:原生js写的贪吃蛇网页版游戏Star={init:function(){v
本文实例为大家分享了js实现贪吃蛇游戏的具体代码,供大家参考,具体内容如下运行截图:源码:贪吃蛇小游戏body{margin:0px;padding:0px;}
本文实例为大家分享了js实现贪吃蛇小游戏的具体代码,供大家参考,具体内容如下Document//贪吃蛇://键盘的方向键,控制蛇的方向,碰撞食物,实现增加长度的