DDR爱好者之家 Design By 杰米
本文实例为大家分享了JS实现贪吃蛇小游戏的具体代码,供大家参考,具体内容如下
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Document</title> <style> *{ margin:0px; padding:0px; } #board{ width:300px; height:500px; border:5px solid #000; margin:50px auto 0px; position: relative; background: #cccccc91; } li:first-child{ position: absolute; width: 10px; height:10px; left: 100px; top: 200px; background:cornflowerblue; z-index: 1; } li{ position: absolute; width: 10px; height:10px; background: pink; list-style: none; } li:nth-child(2){ left: 100px; top: 210px; } li:nth-child(3){ left: 100px; top: 220px; } p{ width: 10px; height: 10px; position: absolute; box-shadow: 0px 0px 2px 2px #000; border-radius: 50%; } #menu{ width:300px; height:30px; border:5px solid #000; border-top:none; margin:0px auto; position: relative; } #menu>button{ border: 0px; width: 75px; display: block; float: left; height: 30px; cursor: pointer; outline: none; } button:nth-child(1){ background: pink; } button:nth-child(2){ background: skyblue; } button:nth-child(3){ background: orange; } button:nth-child(4){ background: rgb(25, 230, 6); } button:hover{ font-size: 18px; color: white; font-weight: bold; } dl{ width: 75px; position: absolute; right:0; bottom:30px; cursor:pointer; display: none; height: 90px; } dl>dd{ display: block; cursor:pointer; text-align: center; line-height: 30px; } dl>dd:nth-child(1){ height: 30px; background: rgba(212, 118, 9, 0.527); } dl>dd:nth-child(2){ height: 30px; background: rgb(142, 6, 253); } dl>dd:nth-child(3){ height: 30px; background: rgb(205, 9, 231); } </style> </head> <body> <div id="board"> <li></li> <li></li> <li></li> </div> <div id="menu"> <button>开始游戏</button> <button>暂停游戏</button> <button onclick="afresh()">重新开始</button> <button>游戏难度</button> <dl> <dd>菜鸟级</dd> <dd>大师级</dd> <dd>魔鬼级</dd> </dl> </div> <script> var ele = document.querySelectorAll("li") var board = document.getElementById("board") var menu = document.querySelectorAll("button") var ddDom = document.querySelectorAll("dd") var locLogLeft = [] var locLogTop = [] var dir = "up" var upLock = true; //让定时器不能连开 var downLock = true; var leftLock = true; var rightLock = true; var level = 200; var count = 0; menu[0].onclick = function(){var result = game(dir,level);} //开始游戏 menu[1].onclick = function(){clearInterval(timer)} //暂停游戏 menu[3].onclick = function(){ //设置难度的函数 count++; if(count%2!=0){ document.getElementsByTagName("dl")[0].style.display="block"} else{ document.getElementsByTagName("dl")[0].style.display="none" } ddDom[0].onclick =function() { count++ level = 200; document.getElementsByTagName("dl")[0].style.display="none" } ddDom[1].onclick =function() { count++ level = 100; document.getElementsByTagName("dl")[0].style.display="none" } ddDom[2].onclick =function() { count++ level = 50; document.getElementsByTagName("dl")[0].style.display="none" } } function afresh(){ //重新开始函数 ele[0].style.left = "100px" ele[0].style.top = "200px" ele[1].style.left = "100px" ele[1].style.top = "210px" ele[2].style.left = "100px" ele[2].style.top = "220px" ele = document.querySelectorAll("li") for(var i = 3;i<ele.length;i++){ board.removeChild(ele[i]) } clearInterval(timer) locLogLeft = [] locLogTop = [] } var timer; foodFun() //游戏开始先生成一食物 document.onkeydown = function(e){ //方向控制函数 var e = e||window.event; var foodDom = document.getElementsByTagName("p")[0] var ele = document.querySelectorAll("li") if(e.keyCode == 87 && ele[0].offsetTop<=ele[1].offsetTop ){ rightLock = true; leftLock = true; if(!upLock == true){ return; } upLock = false; // clearInterval(timer) game("up",level) } if(e.keyCode == 83 && ele[0].offsetTop>=ele[1].offsetTop){ rightLock = true; leftLock = true if(!downLock == true){ return; } downLock = false; // clearInterval(timer) game("down",level) } if(e.keyCode == 68 && ele[0].offsetLeft>=ele[1].offsetLeft){ upLock = true downLock = true; if(!rightLock == true){ return; } rightLock = false; // clearInterval(timer) game("right",level) } if(e.keyCode == 65 && ele[0].offsetLeft<=ele[1].offsetLeft){ upLock = true; downLock = true; if(!leftLock == true){ return; } leftLock = false; // clearInterval(timer) game("left",level) } } function game(direction,speed){ //控制蛇身转弯函数 clearInterval(timer) timer = setInterval(function(e){ var e = e||window.event; var foodDom = document.getElementsByTagName("p")[0] var ele = document.querySelectorAll("li") if(direction == "down"){ dir = "down" locLogLeft = [] locLogTop = [] for(var i=0;i<ele.length;i++){ locLogLeft[i] = ele[i].offsetLeft; locLogTop[i] = ele[i].offsetTop; } ele[0].style.top = 10+ele[0].offsetTop + "px"; for(var i=1;i<ele.length;i++){ ele[i].style.left = locLogLeft[i-1]+"px"; ele[i].style.top = locLogTop[i-1]+"px"; } } if(direction == "up"){ dir = "up" locLogLeft = [] locLogTop = [] for(var i=0;i<ele.length;i++){ locLogLeft[i] = ele[i].offsetLeft; locLogTop[i] = ele[i].offsetTop; } ele[0].style.top = ele[0].offsetTop - 10 + "px"; for(var i=1;i<ele.length;i++){ ele[i].style.left = locLogLeft[i-1]+"px"; ele[i].style.top = locLogTop[i-1]+"px"; } } if(direction == "left"){ dir = "left" locLogLeft = [] locLogTop = [] for(var i=0;i<ele.length;i++){ locLogLeft[i] = ele[i].offsetLeft; locLogTop[i] = ele[i].offsetTop; } ele[0].style.left = ele[0].offsetLeft - 10 + "px"; for(var i=1;i<ele.length;i++){ ele[i].style.left = locLogLeft[i-1]+"px"; ele[i].style.top = locLogTop[i-1]+"px"; } } if(direction=="right"){ dir = "right" locLogLeft = [] locLogTop = [] for(var i=0;i<ele.length;i++){ locLogLeft[i] = ele[i].offsetLeft; locLogTop[i] = ele[i].offsetTop; } ele[0].style.left = 10+ele[0].offsetLeft + "px"; for(var i=1;i<ele.length;i++){ ele[i].style.left = locLogLeft[i-1]+"px"; ele[i].style.top = locLogTop[i-1]+"px"; } } isLost() if(parseInt(foodDom.style.left) == ele[0].offsetLeft && parseInt(foodDom.style.top) == ele[0].offsetTop ){ board.removeChild(foodDom) foodFun() var snakeBody = document.createElement("li") board.appendChild(snakeBody) ele = document.querySelectorAll("li") // console.log(ele,ele.length) ele[ele.length-1].style.left = ele[ele.length-2].offsetLeft+"px"; ele[ele.length-1].style.top = ele[ele.length-2].offsetTop+"px"; } },speed) } function foodFun(e){ //生成食物函数 var e = e||window.Element; var foodColorR = Math.floor((Math.random()*256)) var foodColorG = Math.floor((Math.random()*256)) var foodColorB = Math.floor((Math.random()*256)) var randomFoodX = Math.floor(Math.random()*(board.clientWidth/10)-1) var randomFoodY = Math.floor(Math.random()*(board.clientHeight/10)-1); var food = document.createElement("p") board.appendChild(food) var foodDom = document.getElementsByTagName("p")[0] foodDom.style.left=(randomFoodX+1)*10 +"px" foodDom.style.top=(randomFoodY+1)*10 +"px"; foodDom.style.backgroundColor = "rgb("+foodColorR+","+foodColorG+","+foodColorB+")" if(parseInt(foodDom.style.left) == ele[0].offsetLeft && parseInt(foodDom.style.top) == ele[0].offsetTop ){ foodFun() } } function isLost(){ //判定胜负 ele = document.querySelectorAll("li") if(ele[0].offsetLeft<0 || ele[0].offsetLeft>= board.clientWidth || ele[0].offsetTop<0||ele[0].offsetTop+10>board.clientHeight){ bump = false; alert("你失败了!") afresh() } for(var i=1;i<ele.length;i++){ if(ele[0].offsetLeft == ele[i].offsetLeft && ele[0].offsetTop == ele[i].offsetTop){ alert("你失败了!") afresh() } } } </script> </body> </html>
小编还为大家准备了精彩的专题:javascript经典小游戏汇总
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
DDR爱好者之家 Design By 杰米
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
DDR爱好者之家 Design By 杰米
暂无评论...
《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线
暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。
艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。
《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。
更新日志
2024年11月24日
2024年11月24日
- 凤飞飞《我们的主题曲》飞跃制作[正版原抓WAV+CUE]
- 刘嘉亮《亮情歌2》[WAV+CUE][1G]
- 红馆40·谭咏麟《歌者恋歌浓情30年演唱会》3CD[低速原抓WAV+CUE][1.8G]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[320K/MP3][193.25MB]
- 【轻音乐】曼托凡尼乐团《精选辑》2CD.1998[FLAC+CUE整轨]
- 邝美云《心中有爱》1989年香港DMIJP版1MTO东芝首版[WAV+CUE]
- 群星《情叹-发烧女声DSD》天籁女声发烧碟[WAV+CUE]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[FLAC/分轨][748.03MB]
- 理想混蛋《Origin Sessions》[320K/MP3][37.47MB]
- 公馆青少年《我其实一点都不酷》[320K/MP3][78.78MB]
- 群星《情叹-发烧男声DSD》最值得珍藏的完美男声[WAV+CUE]
- 群星《国韵飘香·贵妃醉酒HQCD黑胶王》2CD[WAV]
- 卫兰《DAUGHTER》【低速原抓WAV+CUE】
- 公馆青少年《我其实一点都不酷》[FLAC/分轨][398.22MB]
- ZWEI《迟暮的花 (Explicit)》[320K/MP3][57.16MB]