日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

js實現貪吃蛇游戲含注釋

瀏覽:185日期:2024-04-03 14:10:24

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

兩個小時完成的,有點簡陋。

直接看效果。打開調試面板,在resource面板,新建snippet

粘貼以下代碼,右鍵snippet,run。

js實現貪吃蛇游戲含注釋

js實現貪吃蛇游戲含注釋

clearInterval(timer);document.body.innerHTML = '';//每秒移動多少格let speed = 10;let speedUpMul = 3;//是否能穿墻let isThroughTheWall = true;//行數let row = 40;let headColor = ’red’;let bodyColor = ’green’;let foodColor = ’yellow’;let borderColor = ’grey’;// 游戲全局變量let hasFood = false;//游戲狀態let gamestaus = ’start’;let hasAccelerate = false;let mainContainer = document.createElement('div');mainContainer.style.width = 20 * row + 1 + 'px';mainContainer.style.height = 20 * row + 1 + 'px';mainContainer.style.margin = '0 auto';mainContainer.style.position = 'relative';mainContainer.style.border = '1px solid ' + borderColor;document.body.appendChild(mainContainer);for(let i = 0;i<row;i++){ let marginTop = 20 * i + 'px'; for(let j = 0;j<row;j++){ let marginLeft = j * 20 + 'px'; let tempDiv = document.createElement(’div’); tempDiv.style.width = '19px'; tempDiv.style.height = '19px'; tempDiv.style.marginTop = marginTop; tempDiv.style.marginLeft = marginLeft; tempDiv.style.border = '0.5px solid ' + borderColor; tempDiv.style.position = 'absolute'; tempDiv.id = j + 'div' + i; mainContainer.appendChild(tempDiv); }}class Cell{ constructor(x, y, color){ if(isThroughTheWall){ if(x < 0) x = row-1; if(x > row - 1) x = 0; if(y < 0) y = row - 1; if(y > row - 1) y = 0; }else{ if(x < 0 || y < 0|| x > row - 1 || y > row - 1){ clearInterval(timer); alert(’游戲結束’); return; } } this.x = x; this.y = y; this.color = color; let tempDiv = document.getElementById(x + ’div’ + y); if(tempDiv) tempDiv.style.backgroundColor = color; }}snake = { head : {}, body : [], dire : 1}let headx = Math.floor(Math.random() * 14) + 3;let heady = Math.floor(Math.random() * 14) + 3;snake.head = new Cell(headx, heady, headColor);//上右下左let direction = [1, 2, 3, 4]snake.dire = direction[Math.floor(Math.random() * 4)];if(snake.dire == 1){ snake.body.push(new Cell(snake.head.x, snake.head.y+1, bodyColor)); snake.body.push(new Cell(snake.head.x, snake.head.y+2, bodyColor)); snake.body.push(new Cell(snake.head.x, snake.head.y+3, bodyColor));}if(snake.dire == 2){ snake.body.push(new Cell(snake.head.x-1, snake.head.y, bodyColor)); snake.body.push(new Cell(snake.head.x-2, snake.head.y, bodyColor)); snake.body.push(new Cell(snake.head.x-3, snake.head.y, bodyColor));}if(snake.dire == 3){ snake.body.push(new Cell(snake.head.x, snake.head.y-1, bodyColor)); snake.body.push(new Cell(snake.head.x, snake.head.y-2, bodyColor)); snake.body.push(new Cell(snake.head.x, snake.head.y-3, bodyColor));}if(snake.dire == 4){ snake.body.push(new Cell(snake.head.x+1, snake.head.y, bodyColor)); snake.body.push(new Cell(snake.head.x+2, snake.head.y, bodyColor)); snake.body.push(new Cell(snake.head.x+3, snake.head.y, bodyColor));}function game(){ if(gamestaus == ’pause’){ return; } if(gamestaus == ’gameover’){ clearInterval(timer); alert(’游戲結束’); return; } initFood(); let snakeHeadX = snake.head.x; let snakeHeadY = snake.head.y; let color = ’’; if(snake.dire == 1){ let tempDiv = document.getElementById(snakeHeadX + ’div’ + (snakeHeadY-1)); if(tempDiv) color = tempDiv.style.backgroundColor; snake.head = new Cell(snakeHeadX, snakeHeadY - 1, headColor); } if(snake.dire == 2){ let tempDiv = document.getElementById((snakeHeadX + 1) + ’div’ + snakeHeadY); if(tempDiv) color = tempDiv.style.backgroundColor; snake.head = new Cell(snakeHeadX + 1, snakeHeadY, headColor); } if(snake.dire == 3){ let tempDiv = document.getElementById(snakeHeadX + ’div’ + (snakeHeadY+1)); if(tempDiv) color = tempDiv.style.backgroundColor; snake.head = new Cell(snakeHeadX, snakeHeadY + 1, headColor); } if(snake.dire == 4){ let tempDiv = document.getElementById((snakeHeadX - 1) + ’div’ + snakeHeadY); if(tempDiv) color = tempDiv.style.backgroundColor; snake.head = new Cell(snakeHeadX - 1, snakeHeadY, headColor); } snake.body.unshift(new Cell(snakeHeadX, snakeHeadY, bodyColor)); if(color && color == foodColor){ hasFood = false; initFood(); }else if(color && color == bodyColor){ gamestaus = ’gameover’; }else{ let lastBody = snake.body.pop(); new Cell(lastBody.x, lastBody.y, ’’); }}var timer = setInterval(game, 10 / speed * 100)/** * 初始化食物 */function initFood(){ while(!hasFood){ let x = Math.floor(Math.random() * row); let y = Math.floor(Math.random() * row); let snakeBody = snake.body; let enable = true; if(snake.head.x == x && snake.head.y == y){ enable = false; } for(sBody of snakeBody){ if(sBody.x == x && sBody.y == y){ enable = false; break; } } if(enable){ new Cell(x, y, foodColor); hasFood = true; } }}document.onkeydown = function(e){ if(e.keyCode == 38){ //上 if(snake.dire != 3 && snake.dire != 1){ snake.dire = 1; }else if(snake.dire == 1){ if(!hasAccelerate){ clearInterval(timer); hasAccelerate = true; speed = speed * speedUpMul; timer = setInterval(game, 10 / speed * 100) } } } if(e.keyCode == 39){ //右 if(snake.dire != 4 && snake.dire != 2){ snake.dire = 2; }else if(snake.dire == 2){ if(!hasAccelerate){ clearInterval(timer); hasAccelerate = true; speed = speed * speedUpMul; timer = setInterval(game, 10 / speed * 100) } } } if(e.keyCode == 40){ //下 if(snake.dire != 1 && snake.dire != 3){ snake.dire = 3; }else if(snake.dire == 3){ if(!hasAccelerate){ clearInterval(timer); hasAccelerate = true; speed = speed * speedUpMul; timer = setInterval(game, 10 / speed * 100) } } } if(e.keyCode == 37){ //左 if(snake.dire != 2 && snake.dire != 4){ snake.dire = 4; }else if(snake.dire == 4){ if(!hasAccelerate){ clearInterval(timer); hasAccelerate = true; speed = speed * speedUpMul; timer = setInterval(game, 10 / speed * 100) } } } //空格鍵暫停 if(e.keyCode == 32){ if(gamestaus == ’start’){ gamestaus = ’pause’; }else if(gamestaus == ’pause’){ gamestaus = ’start’; } }}document.onkeyup = function(e){ if(e.keyCode == 38){ //上 if(snake.dire == 1 && hasAccelerate){ clearInterval(timer); hasAccelerate = false; speed = speed / speedUpMul; timer = setInterval(game, 10 / speed * 100) } } if(e.keyCode == 39){ //右 if(snake.dire == 2 && hasAccelerate){ clearInterval(timer); hasAccelerate = false; speed = speed / speedUpMul; timer = setInterval(game, 10 / speed * 100) } } if(e.keyCode == 40){ //下 if(snake.dire == 3 && hasAccelerate){ clearInterval(timer); hasAccelerate = false; speed = speed / speedUpMul; timer = setInterval(game, 10 / speed * 100) } } if(e.keyCode == 37){ //左 if(snake.dire == 4 && hasAccelerate){ clearInterval(timer); hasAccelerate = false; speed = speed / speedUpMul; timer = setInterval(game, 10 / speed * 100) } }}

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

標簽: JavaScript
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
日产精品一区二区| 国产亚洲午夜| 日本不卡中文字幕| 久久国产精品毛片| 日本亚洲不卡| 国产午夜久久av| 国产精品高潮呻吟久久久久| 国产欧美亚洲一区| 国产一区二区三区探花| 日韩电影二区| 亚洲国产日韩欧美在线| 欧美资源在线| 日韩不卡一二三区| 在线一区免费| 一区二区电影在线观看| 91大神在线观看线路一区| 欧美久久香蕉| 国产伦久视频在线观看| 国产精品日本| 国产精品jk白丝蜜臀av小说| 国产suv精品一区二区四区视频| 91精品国产自产观看在线| 在线日韩视频| 亚洲色诱最新| 国产日韩一区| 日韩综合精品| 欧美 日韩 国产一区二区在线视频| 中文在线一区| 国产午夜一区| 国产一区二区亚洲| 亚洲国产日韩欧美在线| 久久久人人人| 热久久久久久久| 国产欧美一区二区色老头| 日韩综合精品| 日韩视频一二区| 日韩欧美美女在线观看| 日韩一区网站| 国产日韩欧美一区二区三区 | 国产精品久久久久9999高清| 久久久久久久久丰满| 日本不卡一区二区| 先锋影音久久久| 国产精品一区二区av日韩在线| 亚洲精品永久免费视频| 亚洲最大av| 啪啪国产精品| 欧美亚洲自偷自偷| 久久久久美女| 国产精品亚洲产品| 狠狠色狠狠色综合日日tαg| 国产剧情一区| 亚洲男女自偷自拍| 久久先锋影音| 国际精品欧美精品| 亚洲婷婷丁香| 91精品一区二区三区综合| 国产欧美丝祙| 久久亚洲风情| 精品日韩视频| 美女久久精品| 欧美精品国产| 亚洲精品看片| 一区在线观看| 久久久久国产| 国产一区二区三区久久| 亚洲18在线| 91成人精品视频| 2023国产精品久久久精品双| 欧美日韩网址| 久久亚洲欧美| 激情综合自拍| 激情黄产视频在线免费观看| 国产日韩欧美一区二区三区在线观看 | 亚洲小说春色综合另类电影| 亚洲性色视频| 欧美日韩精品免费观看视欧美高清免费大片 | 久久一区亚洲| 国内精品福利| 特黄毛片在线观看| 国产精品美女在线观看直播| 日韩一二三区在线观看| 中日韩男男gay无套| 久久久影院免费| 国产盗摄——sm在线视频| 国产欧美另类| 国产精品一区二区美女视频免费看| 91精品日本| 日本午夜精品| 国产精品一区二区三区美女| 久久激五月天综合精品| 麻豆91精品| 久久久久国产| 国产日韩欧美高清免费| 91伊人久久| 国产精品调教视频| 国产精品色在线网站| 国产日韩三级| 国产精品观看| 久久精品伊人| 国产福利电影在线播放| 久久精品免费一区二区三区 | 777久久精品| 综合激情婷婷| 国产日韩1区| 粉嫩av一区二区三区四区五区 | 日韩欧乱色一区二区三区在线| 亚洲精品高潮| 欧美日韩黄网站| 日韩高清中文字幕一区| 欧美日本三区| 国产精品原创| 亚洲精品小说| 涩涩涩久久久成人精品| 日韩激情啪啪| 老鸭窝一区二区久久精品| 亚洲性色av| aⅴ色国产欧美| 日本在线不卡视频一二三区| 国产欧美高清| 日韩免费av| 不卡av一区二区| 伊人国产精品| 欧美国产极品| 国产精品视频首页| 激情国产在线| 国产二区精品| 天堂精品久久久久| 久久精品国产免费| 91精品啪在线观看国产18| 99在线|亚洲一区二区| 日韩国产欧美视频| 日本久久综合| 亚洲韩日在线| 日韩精品中文字幕吗一区二区| 欧美1区二区| av高清不卡| 激情五月色综合国产精品| 亚洲欧美日本国产专区一区| 日韩精品第一区| 视频在线观看国产精品| 中文字幕一区二区三区在线视频| 羞羞答答国产精品www一本| 欧美日韩 国产精品| 久久久久97| 国产白浆在线免费观看| 亚洲精华国产欧美| 国产亚洲第一伦理第一区| 成人在线黄色| 久久成人国产| 成人午夜毛片| 日产欧产美韩系列久久99| 国产高潮在线| 日本午夜精品一区二区三区电影| 国产福利一区二区三区在线播放| 天堂√8在线中文| 日韩一区精品| 久久久久99| 欧美一级久久| 成人日韩精品| 欧美亚洲三级| 亚洲午夜黄色| 国产日韩亚洲| 精品视频一区二区三区在线观看 | 国产精品麻豆成人av电影艾秋| 成人亚洲一区二区| 亚洲精品黄色| 激情综合网五月| bbw在线视频| 日韩欧美另类中文字幕| 伊人久久av| 久久成人高清| 亚洲一区激情| 99久久精品国产亚洲精品| 欧美日韩亚洲一区| 羞羞答答国产精品www一本| 精品国产一区二区三区av片| 97精品久久| 美女视频一区在线观看| 老牛国产精品一区的观看方式| 欧美日韩视频免费观看| 婷婷精品在线| 亚洲激情久久| 国产一区日韩| 亚洲三级精品| 欧美大黑bbbbbbbbb在线| 国产精品777777在线播放| 欧美伊人影院| 视频一区中文字幕精品| 国产一区清纯| 中文一区一区三区高中清不卡免费| 欧美一区二区三区久久精品| 精品欧美激情在线观看| 青青青国产精品| 一区二区三区午夜视频| 一区在线视频观看| 亚洲永久av| 日韩在线欧美| 欧美三级网址| 国产自产自拍视频在线观看|