在好例子网,分享、交流、成长!
您当前所在位置:首页js 开发实例网页游戏 → HTML贪吃蛇游戏,附重玩,加速,暂停,排行榜功能

HTML贪吃蛇游戏,附重玩,加速,暂停,排行榜功能

网页游戏

下载此实例
  • 开发语言:js
  • 实例大小:0.05M
  • 下载次数:41
  • 浏览次数:717
  • 发布时间:2020-04-22
  • 实例类别:网页游戏
  • 发 布 人:云小白
  • 文件格式:.zip
  • 所需积分:8
 相关标签: 贪吃蛇 排行榜 游戏 js HTML CSS

同类人气实例

实例介绍

【实例简介】

实训时做的个答辩网页游戏本项目是基于html、javascript、css而开发的一款上手简单的贪吃蛇游戏。

【实例截图】



from clipboard


【核心代码】


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)  '名&nbsp;&nbsp;&nbsp;&nbsp;姓名:'  his[i]['name']  '&nbsp;&nbsp;&nbsp;&nbsp;成绩:' his[i]['score'] '</li>'

    }
    ul.innerHTML = html
  }
}
showOrder()


实例下载地址

HTML贪吃蛇游戏,附重玩,加速,暂停,排行榜功能

不能下载?内容有错? 点击这里报错 + 投诉 + 提问

好例子网口号:伸出你的我的手 — 分享

网友评论

发表评论

(您的评论需要经过审核才能显示)

查看所有0条评论>>

小贴士

感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。

  • 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
  • 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
  • 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
  • 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。

关于好例子网

本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明

;
报警