基本信息
源码名称:HTML贪吃蛇游戏,附重玩,加速,暂停,排行榜功能
源码大小:0.05M
文件格式:.zip
开发语言:js
更新时间:2020-04-22
友情提示:(无需注册或充值,赞助后即可获取资源下载链接)
嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):813200300
本次赞助数额为: 8 元×
微信扫码支付:8 元
×
请留下您的邮箱,我们将在2小时内将文件发到您的邮箱
源码介绍
实训时做的个答辩网页游戏本项目是基于html、javascript、css而开发的一款上手简单的贪吃蛇游戏。
var score = document.getElementById('score'); var map = document.getElementById('map');// 获取地图路径 var hangNumber = 20; var lieNumber = 22; var mapWidth = lieNumber * 20 'px';// 地图的宽 var mapHeight = hangNumber * 20 'px';// 地图的高 map.style.width = mapWidth; map.style.height = mapHeight; var snakeDIVPosition = [];//记录地图上的所有div的位置 for ( var i = 0; i < hangNumber; i ) { var hangDIV = document.createElement('div');//行div hangDIV.className = 'hang'; map.appendChild(hangDIV);//创造节点 var hangArray = []; for ( var j = 0; j < lieNumber; j ) { var lieDIV = document.createElement('div');//方块DIV lieDIV.className = 'lie'; hangDIV.appendChild(lieDIV);//在创造节点 hangArray.push(lieDIV);//将lieDiv添加到数组 } snakeDIVPosition.push(hangArray);//将hangArray添加到数组 } var snake = [];//蛇身 for ( var i = 0; i < 3; i ) { snakeDIVPosition[0][i].className = 'lie liveSnake'; snake[i] = snakeDIVPosition[0][i]; } //初始化 score.innerHTML=0; var x = 2; var y = 0; var scoreCount = 0; var foodX = 0; var foodY = 0; var direction = 'right'; var changeDir = true; var delayTimer = null; document.onkeydown = function(event) {//方向键 if (!changeDir) {//判断是否需要改变方向 return; } event = event || window.event; if (direction=='right' && event.keyCode == 37) { return; } if (direction == 'left' && event.keyCode == 39) { return; } if (direction == 'up' && event.keyCode == 40) { return; } if (direction == 'down' && event.keyCode == 38) { return; } switch (event.keyCode) { case 37: direction = 'left'; break; case 38: direction = 'up'; break; case 39: direction = 'right'; break; case 40: direction = 'down'; break; } changeDir = false; delayTimer = setTimeout(function() { changeDir = true; },50) }; function snakeMove() {//蛇头位置 switch (direction) { case 'left': x--; break; case 'right': x ; break; case 'up': y--; break; case 'down': y ; break; }; if (x < 0 || y < 0 || x >= lieNumber || y >= hangNumber) {//判断游戏是否结束 alert('游戏结束!您当前的得分是:' scoreCount '分!继续加油吧!'); clearInterval(moveTimer); paihang(); return; } for ( var i = 0; i < snake.length; i ) { if (snake[i] == snakeDIVPosition[y][x]) {//蛇头位置与之前身体位置比较,相同则吃到了自己 alert('您吃了您自己!游戏结束!下次请注意哦!另外,您当前的分数是:' scoreCount '分!继续加油吧!'); clearInterval(moveTimer); paihang(); return; }; } if (foodX == x && foodY == y) {//判断当前位置是否有食物 snakeDIVPosition[foodY][foodX].className = 'lie liveSnake'; snake.push(snakeDIVPosition[foodY][foodX]);//蛇加长 scoreCount=scoreCount 5;//记分 score.innerHTML = scoreCount;//更新分数 createNewfood();//随即产生食物 } else {//蛇尾变成格子的颜色 snake[0].className = 'lie'; snake.shift(); snakeDIVPosition[y][x].className = 'lie liveSnake'; snake.push(snakeDIVPosition[y][x]); }; }; var moveTimer = setInterval('snakeMove()', 300);//蛇移动速度 function random(min, max) { return Math.floor(Math.random() * (max - min 1) min); }; function createNewfood() {//随即产生食物 foodX = random(0, lieNumber - 1); foodY = random(0, hangNumber - 1); if (snakeDIVPosition[foodY][foodX].className == 'lie liveSnake') { createNewfood();//食物被吃后,随即又产生食物 } else { snakeDIVPosition[foodY][foodX].className = 'lie food'; } }; createNewfood();//开局的食物 var pause = document.getElementById('Pause'); var start = document.getElementById('Start'); var refresh = document.getElementById('Refresh'); var speed = document.getElementById('Speed'); pause.onclick = function() { clearInterval(moveTimer); }; start.onclick = function() { clearInterval(moveTimer); moveTimer = setInterval('snakeMove()', speed1); }; refresh.onclick = function() { window.location.reload(); }; var speed1 = 300; speed.onclick = function() { speed1 -= 50; clearInterval(moveTimer); moveTimer = setInterval('snakeMove()', speed1); }; function paihang() { var his = localStorage.getItem('history') if (his) { // 已经有记录了 //把his转换为JSON对象 his = JSON.parse(his) if (his.length >= 10) { // 当前成绩是否进入了前10名 if (scoreCount > his[9].score) { gameStorage(scoreCount) } else { alert('请再接再厉!') } } else { gameStorage(scoreCount) } } else { // 第一次 gameStorage(scoreCount) } } // 游戏存储 function gameStorage(score) { if(scoreCount<100) { alert('友情提示:只有分数超过100才能进入至尊排行榜哦!')} else { var name = prompt('恭喜您获得进入至尊榜的资格!请输入您的名字哟:') name = name ? name : '匿名' his = localStorage.getItem('history') if (his) { his = JSON.parse(his)// 将JSON字符串转换JSON对象(数组) var index = his.length // 计算出当前成绩应该放到哪个 位置 for (var a in his) { if (score > his[a].score) {// 当前成绩 大于 哪个历史记录 就放到哪个之前 index = a break } } // 当前成绩的数组 var obj = [ {"name": name, "score": score} ] // 根据 上一步到的位置 从这个地方 his 分为2个数组 var before = his.slice(0, index) var after = his.slice(index, his.length) // 将3个数组 进行重新排序 需要把当前的成绩 插入 before after中间 更新缓存 localStorage.setItem('history', JSON.stringify(before.concat(obj, after))) } else { var obj = [ {"name": name, "score": score} ] // 转换为JSON格式字符串 进行存储 localStorage.setItem('history', JSON.stringify(obj)) } } // 更新排行榜 showOrder() } // 排行榜输出 function showOrder() { var ul = document.getElementById('orderList') ul.innerHTML = '' his = localStorage.getItem( 'history') if (his) { his = JSON.parse(his) var html = '' for (var i = 0; i <= his.length - 1; i ) { if (i > 9) { break } html = '<li>第' (i 1) '名 姓名:' his[i]['name'] ' 成绩:' his[i]['score'] '</li>' } ul.innerHTML = html } } showOrder()