js貪吃蛇遊戲程式碼例項
分享一段程式碼例項,它利用js實現了貪吃蛇遊戲。
程式碼例項如下:
[HTML] 純文字檢視 複製程式碼執行程式碼<!doctype html> <html> <head> <meta charset="utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title>螞蟻部落</title> <style media="screen"> .wrap { margin: auto; font-size: 0px; border: 1px solid black; position: relative; } .colDiv { width: 20px; height: 20px; display: inline-block; } .snake { background: black; } .egg { background: gray; } .head { width: 100%; height: 30px; font-size: 30px; text-align: center; margin: 10px 0px; } .score { width: 45%; height: 30px; font-size: 30px; text-align: right; display: inline-block; } .againgame { width: 100%; height: 400px; position: absolute; top: 84px; background: rgba(0, 0, 0, 0.6); display: none; } .over { width: 100%; position: absolute; top: 160px; color: red; font-size: 50px; text-align: center; } .again { width: 100%; position: absolute; top: 230px; color: yellow; font-size: 50px; text-align: center; cursor: pointer; } .hhh { width: 45%; height: 30px; font-size: 30px; text-align: right; display: inline-block; } .line { width: 100%; border: 1px solid black; } </style> </head> <body> <div class="wrap"> <div class="head">貪吃蛇遊戲</div> <div class="hhh">歷史最高:0</div> <div class="score">得分:0</div> <div class="line"></div> <div class="againgame"> <div class="over">Game Over</div> <div class="again">Again</div> </div> </div> <script type="text/javascript"> var wrap = document.querySelector('.wrap'); var againgame = document.querySelector('.againgame'); var again = document.querySelector('.again'); var score = document.querySelector('.score'); var hhh = document.querySelector('.hhh'); var scores = 0; var rownum = 20; var colnum = 20; var allArr = []; for (var i = 0; i < rownum; i++) { var rowDiv = document.createElement('div'); var rowArr = []; for (var j = 0; j < colnum; j++) { var colDiv = document.createElement('div'); colDiv.className = 'colDiv'; rowArr.push(colDiv); rowDiv.appendChild(colDiv); } allArr.push(rowArr); wrap.appendChild(rowDiv); } wrap.style.width = colnum * colDiv.offsetWidth + 'px'; // 蛇身 var snakebody = []; function snake() { for (var i = 0; i < 3; i++) { allArr[0][i].className = 'colDiv snake'; snakebody.push(allArr[0][i]); } } snake(); // 蛇移動 var speedtime = 300; var moveTimer = null; var direction = 'right'; var x = 2; var y = 0; function snakemove() { moveTimer = setInterval(function() { switch (direction) { case 'right': x++; break; case 'left': x--; break; case 'up': y--; break; case 'down': y++; break; default: } if (x < 0 || y < 0 || x >= colnum || y >= rownum) { clearInterval(moveTimer); againgame.style.display = 'block'; h(); return; } for (var i = 0; i < snakebody.length; i++) { if (snakebody[i] == allArr[y][x]) { clearInterval(moveTimer); againgame.style.display = 'block'; h(); return; } } if (x == eggx && y == eggy) { snakebody.push(allArr[eggy][eggx]); allArr[eggy][eggx].className = 'colDiv snake'; scores++; score.innerHTML = '得分:' + scores; createEgg(); } else { snakebody[0].className = 'colDiv'; snakebody.shift(); allArr[y][x].className = 'colDiv snake'; snakebody.push(allArr[y][x]); } }, speedtime); } snakemove(); // 新增鍵盤事件 var kd = true; document.onkeydown = function(event) { if (!kd) { return; } var event = event || window.event; if (event.keyCode == 37 && direction == 'right') { return; } if (event.keyCode == 39 && direction == 'left') { return; } if (event.keyCode == 40 && direction == 'up') { return; } if (event.keyCode == 38 && direction == 'down') { return; } switch (event.keyCode) { case 37: direction = 'left'; break; case 38: direction = 'up'; break; case 39: direction = 'right'; break; case 40: direction = 'down'; break; default: } kd = false; var kdd = setTimeout(function() { kd = true; }, speedtime) } // 生成隨機蛋 function rand(max) { var ran = parseInt(Math.random() * max); return ran; } function createEgg() { eggx = rand(colnum); eggy = rand(rownum); if (allArr[eggy][eggx].className == 'colDiv snake') { createEgg(); } else { allArr[eggy][eggx].className = 'colDiv egg'; } } createEgg(); // 重新開始 again.onclick = function() { for (var i = 0; i < snakebody.length; i++) { snakebody[i].className = 'colDiv'; } snakebody = []; x = 2; y = 0; snake() allArr[eggy][eggx].className = 'colDiv'; createEgg(); snakemove(); direction = 'right'; againgame.style.display = 'none'; scores = 0; score.innerHTML = '得分:0'; } function h() { var his = localStorage.getItem('max') if (his == null || his < scores) { localStorage.setItem('max', scores); his = scores; } hhh.innerHTML = '歷史最高:' + his; } </script> </body> </html>
相關文章
- canvas貪吃蛇遊戲程式碼例項Canvas遊戲
- javascript貪吃蛇小遊戲程式碼例項JavaScript遊戲
- canvas實現的貪吃蛇遊戲程式碼例項Canvas遊戲
- js實現的移動端貪吃蛇遊戲程式碼例項JS遊戲
- 貪吃蛇jsJS
- [譯] RxJS 遊戲之貪吃蛇JS遊戲
- [原生JS][程式導向]貪吃蛇JS
- Python:遊戲:貪吃蛇Python遊戲
- OpenGL實現貪吃蛇程式碼
- js開發實現簡單貪吃蛇遊戲(20行程式碼)JS遊戲行程
- 一個貪吃蛇小遊戲(17行程式碼)遊戲行程
- 貪吃蛇c原始碼原始碼
- 貪吃蛇源程式 (轉)
- jQuery 實現貪吃蛇遊戲jQuery遊戲
- 04 貪吃蛇
- Shell寫的貪吃蛇遊戲(轉)遊戲
- C語言貪吃蛇原始碼C語言原始碼
- Java實現貪吃蛇Java
- html畫布製作貪吃蛇小遊戲HTML遊戲
- H5遊戲開發:貪吃蛇H5遊戲開發
- 純JS實現貪吃蛇遊戲 —— 可能是全網程式碼最優雅的實現。JS遊戲
- 100行Python程式碼實現貪吃蛇小遊戲(超詳細)Python遊戲
- 無法執行的貪吃蛇遊戲程式碼,求大神幫忙改動!遊戲
- (完整原始碼)貪吃蛇小遊戲——HTML+CSS+JavaScript實現原始碼遊戲HTMLCSSJavaScript
- 貪吃蛇大作戰JavaFx版完整原始碼Java原始碼
- 開發Windows貪吃蛇遊戲——(一)前期準備Windows遊戲
- C語言小遊戲------貪吃蛇----小白專用C語言遊戲
- 手把手教你寫Android 貪吃蛇 遊戲Android遊戲
- Ubuntu下C語言實現貪吃蛇遊戲UbuntuC語言遊戲
- Python3 貪吃蛇Python
- python實現貪吃蛇Python
- C#貪吃蛇(WPF版)C#
- 裝逼的最高境界---一行js程式碼完成一個簡易版的貪吃蛇遊戲JS遊戲
- h5+js實現單機版貪吃蛇H5JS
- GUI 基於Swing製作貪吃蛇小遊戲GUI遊戲
- 【Python】 Python小遊戲-貪吃蛇大冒險Python遊戲
- 基於51微控制器的貪吃蛇遊戲遊戲
- 初試javascript :貪吃蛇啊 (轉)JavaScript