亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

純原生js實現貪吃蛇游戲

2019-11-19 16:40:15
字體:
來源:轉載
供稿:網友

本文實例為大家分享了js實現貪吃蛇游戲的具體代碼,供大家參考,具體內容如下

<html><head><meta http-equiv="Content-Type" content="text/html; charset=gbk"><title>貪吃蛇游戲</title><style type="text/css">* {  margin: 0;  padding: 0;}.wrap {  width: 600px;  margin: 0 auto;  position: relative;}p {  position: absolute;  left: 65%;  top: 10%;}h1 {  text-align: center;  margin-bottom: 20px;}#score {  text-align: center;  font-size: 20px;}#snake_map {  margin: 0 auto;  border: 1px solid skyblue;}/*行樣式*/.row {  height: 20px;}/*列樣式*/.col {  height: 20px;  width: 20px;  box-sizing: border-box;  border: 1px solid lightgray;  background: rgb(250, 250, 250);  float: left;}.activeSnake {  background: black;}.egg {  background: red;}#Pause {  margin-left: 18%;  border: 1px solid skyblue;  color: white;  background: skyblue;  width: 50px;  height: 30px;  margin-bottom: 10px;  border-radius: 5px;}#Start,#Refresh,#Speed {  border: 1px solid skyblue;  background: skyblue;  color: white;  width: 50px;  height: 30px;  border-radius: 5px;  margin-left: 15px;}</style></head> <body>  <div class="wrap">   <h1>貪吃蛇游戲</h1>   <!-- 記錄吃了多少個蛋 -->   <p style="font-size:20px;color:red"> score:<span id="score" style="color:black">0</span> </p>   <!-- 暫停按鈕 -->   <input id="Pause" type="button" name="name" value="Pause">   <!-- 開始按鈕 -->   <input id="Start" type="button" name="name" value="Start">   <!-- 刷新(重新開始游戲) -->   <input id="Refresh" type="button" name="name" value="Refresh">   <!-- 加速按鈕 -->   <input id="Speed" type="button" name="name" value="Speed">   <!-- 貪吃蛇的行走路徑地圖 -->   <div id="snake_map">   </div>  </div> </body><script type="text/javascript">//獲取分數標簽var score = document.getElementById('score');// 獲取路徑地圖標簽var map = document.getElementById('snake_map');// 為了靈活的設置地圖的大小,以下設置兩個變量// 用于存儲行數和列數(即方格的個數)var rowNumber = 25;// 行數var columnNumber = 20;// 列數;var mapWidth = columnNumber * 20 + 'px';// 地圖的寬var mapHeight = rowNumber * 20 + 'px';// 地圖的高map.style.width = mapWidth;map.style.height = mapHeight;// 設置地圖寬高// 創建一個二維數組,用來記錄地圖上的所有div的位置var snakeDIVPosition = [];// 通過雙層for循環來創建地圖元素for ( var i = 0; i < rowNumber; i++) {  // 創建行div  var rowDIV = document.createElement('div');  // 設置div樣式  rowDIV.className = 'row';  // 將行div添加到路徑地圖map中  map.appendChild(rowDIV);  // 創建一個行級數組,用來存儲當前行中的每個方塊div  var rowArray = [];  for ( var j = 0; j < columnNumber; j++) {    // 創建每一行中的方塊div    var columnDIV = document.createElement('div');    // 設置css樣式    columnDIV.className = 'col';    // 將方塊DIV添加到當前行中    rowDIV.appendChild(columnDIV);    // 同時將方塊添加到行數組中    rowArray.push(columnDIV);  }  // 當前內層循環結束,將行數組添加到二維數組中  snakeDIVPosition.push(rowArray);}// 創建蛇模型// 創建一個一維數組,用來存儲蛇身所占的divvar snake = [];// 固定蛇身起始長度為3個divfor ( var i = 0; i < 3; i++) {  // 為蛇身設置不同顏色的div  snakeDIVPosition[0][i].className = 'col activeSnake';  // 存儲在蛇身數組中  snake[i] = snakeDIVPosition[0][i];}// 定義變量來控制蛇var x = 2;var y = 0;// 蛇頭的起始位置偏移量var scoreCount = 0;// 分數計數器,即吃了多少個蛋var eggX = 0;// 記錄蛋所在的行位置var eggY = 0;// 記錄蛋所在的列位置;var direction = 'right';// 記錄蛇移動的方向,初始為向右var changeDir = true;// 判斷是否需要改變蛇的移動方向var delayTimer = null;// 延遲定時器// 添加鍵盤事件監聽方向鍵來改變蛇的移動方向document.onkeydown = function(event) {  // 先判斷是否需要改變方向,true表示需要,false表示不需要  if (!changeDir) {    return;// 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;  }  // 我們通過keyCode確定蛇要移動的方向  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;  }, 300);};// 開始設置蛇移動邏輯// 蛇移動函數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 >= columnNumber || y >= rowNumber) {    alert('Game Over!!!');    // 結束蛇移動的定時器    clearInterval(moveTimer);    return;// 終止鍵盤事件;  }  // 如果蛇吃到自己,也要結束游戲  for ( var i = 0; i < snake.length; i++) {    // 將此時蛇頭移動后的位置與之前左右的組成蛇的div的位置進行比較,如果相同則說明吃到自己,游戲結束    if (snake[i] == snakeDIVPosition[y][x]) {      alert('Game over!!!');      clearInterval(moveTimer);      return;    };  }  // 判斷蛇頭移動的位置是否有蛋  if (eggX == x && eggY == y) {    snakeDIVPosition[eggY][eggX].className = 'col activeSnake';    snake.push(snakeDIVPosition[eggY][eggX]);// 加入蛇身    scoreCount++;// 記錄分數    // 更新當前的分數    score.innerHTML = scoreCount;    // 隨機產生一個新的蛋    createNewEgg();  } else {    // 設置蛇碰不到蛋的邏輯    // 讓蛇移動    // 蛇尾去掉蛇自身的顏色,變成格子的顏色    snake[0].className = 'col';    // 將蛇尾div從數組中移除    snake.shift();    // 定位到的新的蛇頭加入到蛇數組中    snakeDIVPosition[y][x].className = 'col activeSnake';    snake.push(snakeDIVPosition[y][x]);  };};var moveTimer = setInterval('snakeMove()', 300);// 定義一個生成min,max之間的隨機數函數function random(min, max) {  return Math.floor(Math.random() * (max - min + 1) + min);};function createNewEgg() {  // 隨機出新的egg的下標的x和y值  eggX = random(0, columnNumber - 1);  eggY = random(0, rowNumber - 1);  // 判斷如果隨機產生的蛋與蛇身重合,就重新隨機產生一個蛋  if (snakeDIVPosition[eggY][eggX].className == 'col activeSnake') {    createNewEgg();// 重新隨機新的egg  } else {    snakeDIVPosition[eggY][eggX].className = 'col egg';  }};createNewEgg();// 在游戲開始的時候生成新的eggvar 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 -= 20;  clearInterval(moveTimer);  moveTimer = setInterval('snakeMove()', speed1);};</script></html>

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
中文字幕在线精品| 日韩视频在线免费观看| 欧美午夜无遮挡| 亚洲久久久久久久久久久| 中文字幕在线成人| 亚洲图片欧洲图片av| 亚洲精品videossex少妇| 夜夜嗨av一区二区三区免费区| 亚洲国产精品电影| 欧美大片在线看免费观看| 色偷偷噜噜噜亚洲男人| 高清欧美性猛交xxxx| 国产日产欧美a一级在线| 精品亚洲国产成av人片传媒| 97在线观看免费| 国产亚洲欧美一区| 亚洲色图激情小说| 欧美色播在线播放| 日韩成人在线视频网站| 亚洲欧美自拍一区| 国产精品日日摸夜夜添夜夜av| 国产成人在线播放| 精品中文字幕在线观看| 中文字幕欧美日韩va免费视频| 日本19禁啪啪免费观看www| 欧美成人黑人xx视频免费观看| yw.139尤物在线精品视频| 亚洲护士老师的毛茸茸最新章节| 亚洲欧美日韩中文在线制服| 国产视频久久久久久久| 久久久久久18| 少妇高潮久久77777| 亚洲人成网7777777国产| www.日韩.com| 国内精品久久久久久影视8| 日韩国产精品亚洲а∨天堂免| 欧美激情欧美激情| www.日韩欧美| 亚洲r级在线观看| 国内成人精品一区| 日韩一区二区在线视频| 欧美激情免费观看| 欧洲美女7788成人免费视频| 国产丝袜一区二区| 81精品国产乱码久久久久久| 亚洲视频第一页| 欧美老少配视频| 久久人人爽亚洲精品天堂| 欧美成人精品三级在线观看| 精品国产乱码久久久久久婷婷| 国产在线精品一区免费香蕉| 久久网福利资源网站| 亚洲少妇中文在线| 亚洲国产欧美久久| 国产精品久久97| 国产视频精品va久久久久久| 亚洲3p在线观看| 久久久国产精品亚洲一区| 亚洲人av在线影院| 久久九九热免费视频| 亚洲加勒比久久88色综合| 国产日韩欧美在线看| 欧美日韩午夜激情| 日韩经典第一页| 国产精品黄页免费高清在线观看| 美日韩精品视频免费看| 日韩欧美aaa| 69精品小视频| 国内精品一区二区三区| 欧美性猛交xxxx| 91成人精品网站| 欧美激情视频在线免费观看 欧美视频免费一| 亚洲欧美一区二区三区四区| 国产欧美精品一区二区三区介绍| 亚洲级视频在线观看免费1级| 国产福利视频一区| 性欧美激情精品| 欧美性极品xxxx做受| 久久成人精品电影| 精品视频在线播放免| 成人激情综合网| 91精品国产综合久久香蕉| 久久久久久久久久婷婷| 亚洲午夜国产成人av电影男同| 国产成人av网| 夜色77av精品影院| 97在线视频免费观看| 亚洲性视频网站| 亚洲国产黄色片| 91在线免费看网站| 日韩精品日韩在线观看| 久久精品99久久久香蕉| 在线视频欧美日韩精品| 日本午夜精品理论片a级appf发布| 91最新在线免费观看| 午夜精品免费视频| 国产精品一区二区三| 8050国产精品久久久久久| 欧美做受高潮1| 国产成人精品免高潮在线观看| 日韩美女在线看| 日韩欧美亚洲成人| 欧美性猛交xxxx久久久| 日韩在线播放av| 日韩av在线免费播放| 欧美尺度大的性做爰视频| 亚洲乱码一区二区| 午夜精品在线视频| 日韩久久精品电影| 精品中文字幕久久久久久| 人九九综合九九宗合| 国产成人激情视频| 亚洲成成品网站| 亚洲乱码国产乱码精品精| 亚洲国产美女精品久久久久∴| 欧美激情一区二区三区成人| 57pao国产成人免费| 久久精品电影一区二区| 欧美劲爆第一页| 成人激情视频网| 中文字幕国产亚洲| 成人网在线免费观看| 国产精品一区久久久| 日韩欧美亚洲国产一区| 97成人精品视频在线观看| 日韩欧美中文第一页| 亚洲欧美制服丝袜| 91成人国产在线观看| 久久亚洲精品一区| 日本国产精品视频| 亚洲国产精品va在线观看黑人| 成人国产亚洲精品a区天堂华泰| 亚洲成人av中文字幕| 一本色道久久88综合亚洲精品ⅰ| 亚洲国产欧美一区| 日韩精品在线免费观看视频| 久久久97精品| 日韩精品高清在线观看| 久99九色视频在线观看| 国产精品美乳一区二区免费| 久久成人18免费网站| 日韩最新中文字幕电影免费看| 国产精品一区=区| 国产精品久久久久久久久免费| 成人午夜在线影院| 日韩69视频在线观看| 国产v综合v亚洲欧美久久| 亚洲毛片在线看| 成人在线中文字幕| 久久精品夜夜夜夜夜久久| xxx一区二区| 亚洲自拍欧美色图| 成人高h视频在线| 欧美性精品220| 日韩中文字幕在线精品| 久久久国产精品一区| 国产亚洲精品美女久久久| 国产精品精品视频一区二区三区| 久久久久北条麻妃免费看| 91亚洲精品视频| 欧美日韩国产中文精品字幕自在自线| 亚洲国产成人av在线| 国外色69视频在线观看| 欧美性猛交xxxx久久久|