国产成人精品无码青草_亚洲国产美女精品久久久久∴_欧美人与鲁交大毛片免费_国产果冻豆传媒麻婆精东

15158846557 在線咨詢 在線咨詢
15158846557 在線咨詢
所在位置: 首頁 > 營銷資訊 > 網(wǎng)站運營 > 用HTML+CSS+JavaScript做一個簡單的貪吃蛇小游戲

用HTML+CSS+JavaScript做一個簡單的貪吃蛇小游戲

時間:2023-07-25 22:09:01 | 來源:網(wǎng)站運營

時間:2023-07-25 22:09:01 來源:網(wǎng)站運營

用HTML+CSS+JavaScript做一個簡單的貪吃蛇小游戲:最近因為幫助大一的學妹做網(wǎng)頁,又接觸了一下前端方面的知識。(學妹已經(jīng)成了女朋友?。。?,嘻嘻)感謝自己當年認真學習,大三了好多東西還能拾起來,哈哈。我翻出了我當年寫的代碼,還真不少呢。今天復習復習,看一看那時候?qū)懙囊粋€貪吃蛇的代碼。當時用了一整天,跟著今日頭條上推送給我的一個視頻一點一點手敲的…… 兩年半了,我記得這么清楚,是因為寫這個太痛苦了,記憶猶新?。。。〈笠皇智弥恢罏槭裁吹拇a,一遍一遍的報錯,一遍一遍的改錯誤……




現(xiàn)在感覺起來,裝好插件的VS code配合上Chrome調(diào)試,真的是爽到爆啊。當時太年輕,不知道這么先進的工具,可能有人會說Sublime Text更好用,我承認,我選擇VS code 僅僅因為是插件安裝方便。




大概看了看這個貪吃蛇的代碼,主要用了HTML5中的canvas(畫布)實現(xiàn)游戲界面,蛇的控制邏輯用JavaScript。定時調(diào)用函數(shù)使得蛇動起來。代碼簡單易懂,分享出來,供初學者參考學習。省的手敲代碼,遇到各種錯誤,學習的熱情被各種八阿哥拒之門外,先讓程序跑起來,帶有興趣的研究代碼,效率應該更高吧。(個人觀點,純屬扯淡)話不多說,直接上代碼:圖片自配

index.html<!DOCTYPE html><html><head> <title>貪吃蛇</title> <meta charset="UTF-8"> <meta name="keywords" content="貪吃蛇"> <meta name="Description" content="這是一個初學者用來學習的小游戲"> <style type="text/css"> *{margin:0;} .map{margin:100px auto; height:600px; width:900px; background:#00D0FF; border:10px solid #AFAEB2; border-radius:8px; } </style> </head> <body><div class="map"><canvas id="canvas" height="600" width="900"> </canvas></div> <script src="javascript/snake.js"> </script></body></html>小白勿看#這是測試



snake.js //獲取繪制工具 /* var canvas = document.getElementById("canvas"); var ctx = canvas.getContext("2d");//獲取上下文 ctx.moveTo(0,0); ctx.lineTo(450,450);*/ var c=document.getElementById("canvas"); var ctx=c.getContext("2d"); /*ctx.beginPath(); ctx.moveTo(0,0); ctx.lineTo(450,450); ctx.stroke(); */ var snake =[];//定義一條蛇,畫蛇的身體 var snakeCount = 6;//初始化蛇的長度 var foodx =0; var foody =0; var togo =0; function drawtable()//畫地圖的函數(shù) { for(var i=0;i<60;i++)//畫豎線 { ctx.strokeStyle="black"; ctx.beginPath(); ctx.moveTo(15*i,0); ctx.lineTo(15*i,600); ctx.closePath(); ctx.stroke(); } for(var j=0;j<40;j++)//畫橫線 { ctx.strokeStyle="black"; ctx.beginPath(); ctx.moveTo(0,15*j); ctx.lineTo(900,15*j); ctx.closePath(); ctx.stroke(); } for(var k=0;k<snakeCount;k++)//畫蛇的身體 { ctx.fillStyle="#000"; if (k==snakeCount-1) { ctx.fillStyle="red";//蛇頭的顏色與身體區(qū)分開 } ctx.fillRect(snake[k].x,snake[k].y,15,15);//前兩個數(shù)是矩形的起始坐標,后兩個數(shù)是矩形的長寬。 } //繪制食物 ctx.fillStyle ="black"; ctx.fillRect(foodx,foody,15,15); ctx.fill(); } function start()//定義蛇的坐標 { //var snake =[];//定義一條蛇,畫蛇的身體 //var snakeCount = 6;//初始化蛇的長度 for(var k=0;k<snakeCount;k++) { snake[k]={x:k*15,y:0}; } drawtable(); addfood();//在start中調(diào)用添加食物函數(shù) } function addfood() { foodx = Math.floor(Math.random()*60)*15; //隨機產(chǎn)生一個0-1之間的數(shù) foody = Math.floor(Math.random()*40)*15; for (var k=0;k<snake;k++) { if (foodx==snake[k].x&&foody==sanke[k].y)//防止產(chǎn)生的隨機食物落在蛇身上 { addfood(); } } } function move() { switch (togo) { case 1: snake.push({x:snake[snakeCount-1].x-15,y:snake[snakeCount-1].y}); break;//向左走 case 2: snake.push({x:snake[snakeCount-1].x,y:snake[snakeCount-1].y-15}); break; case 3: snake.push({x:snake[snakeCount-1].x+15,y:snake[snakeCount-1].y}); break; case 4: snake.push({x:snake[snakeCount-1].x,y:snake[snakeCount-1].y+15}); break; case 5: snake.push({x:snake[snakeCount-1].x-15,y:snake[snakeCount-1].y-15}); break; case 6: snake.push({x:snake[snakeCount-1].x+15,y:snake[snakeCount-1].y+15}); break; default: snake.push({x:snake[snakeCount-1].x+15,y:snake[snakeCount-1].y}); } snake.shift();//刪除數(shù)組第一個元素 ctx.clearRect(0,0,900,600);//清除畫布重新繪制 isEat(); isDead(); drawtable(); } function keydown(e) { switch(e.keyCode) { case 37: togo=1; break; case 38: togo=2; break; case 39: togo=3; break; case 40: togo=4; break; case 65: togo=5; break; case 68: togo=6; break; } } function isEat()//吃到食物后長度加1 { if(snake[snakeCount-1].x==foodx&&snake[snakeCount-1].y==foody) { addfood(); snakeCount++; snake.unshift({x:-15,y:-15}); } } function isDead() { if (snake[snakeCount-1].x>885||snake[snakeCount-1].y>585||snake[snakeCount-1].x<0||snake[snakeCount-1].y<0) { alert("You are dead,GAME OVER!!!"); window.location.reload(); } } document.onkeydown=function(e){ keydown(e); } window.onload = function()//調(diào)用函數(shù){ start(); setInterval(move,150); drawtable(); } 圖片自配

小白勿看?。。。。。。。。。。。。?br>
大佬來看

HTML5游戲開發(fā)群

加管理扣Q進群交流:166#132940*8 刪#和圖片我發(fā)要圖片加扣Q:16#6132*9408

刪#和*



關(guān)鍵詞:游戲,簡單

74
73
25
news

版權(quán)所有? 億企邦 1997-2025 保留一切法律許可權(quán)利。

為了最佳展示效果,本站不支持IE9及以下版本的瀏覽器,建議您使用谷歌Chrome瀏覽器。 點擊下載Chrome瀏覽器
關(guān)閉