(完整原始碼)貪吃蛇小遊戲——HTML+CSS+JavaScript實現
最近因為幫助大一的學妹做網頁,又接觸了一下前端方面的知識。(學妹已經成了女朋友!!!,嘻嘻)感謝自己當年認真學習,大三了好多東西還能拾起來,哈哈。我翻出了我當年寫的程式碼,還真不少呢。今天覆習複習,看一看那時候寫的一個貪吃蛇的程式碼。當時用了一整天,跟著今日頭條上推送給我的一個視訊一點一點手敲的…… 兩年半了,我記得這麼清楚,是因為寫這個太痛苦了,記憶猶新啊!!!大一手敲著不知道為什麼的程式碼,一遍一遍的報錯,一遍一遍的改錯誤……
現在感覺起來,裝好外掛的VS code配合上Chrome除錯,真的是爽到爆啊。當時太年輕,不知道這麼先進的工具,可能有人會說Sublime Text更好用,我承認,我選擇VS code 僅僅因為是外掛安裝方便。
大概看了看這個貪吃蛇的程式碼,主要用了HTML5中的canvas(畫布)實現遊戲介面,蛇的控制邏輯用JavaScript。定時呼叫函式使得蛇動起來。程式碼簡單易懂,分享出來,供初學者參考學習。省的手敲程式碼,遇到各種錯誤,學習的熱情被各種八阿哥拒之門外,先讓程式跑起來,帶有興趣的研究程式碼,效率應該更高吧。(個人觀點,純屬扯淡)話不多說,直接上程式碼:
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>
javascript程式碼:
//獲取繪製工具
/*
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()//畫地圖的函式
{
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";//蛇頭的顏色與身體區分開
}
ctx.fillRect(snake[k].x,snake[k].y,15,15);//前兩個數是矩形的起始座標,後兩個數是矩形的長寬。
}
//繪製食物
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中呼叫新增食物函式
}
function addfood()
{
foodx = Math.floor(Math.random()*60)*15; //隨機產生一個0-1之間的數
foody = Math.floor(Math.random()*40)*15;
for (var k=0;k<snake;k++)
{
if (foodx==snake[k].x&&foody==sanke[k].y)//防止產生的隨機食物落在蛇身上
{
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();//刪除陣列第一個元素
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()//呼叫函式
{
start();
setInterval(move,150);
drawtable();
}
下面是程式執行截圖:
相關文章
- 貪吃蛇大作戰JavaFx版完整原始碼Java原始碼
- js+jquery實現貪吃蛇經典小遊戲JSjQuery遊戲
- 100行Python程式碼實現貪吃蛇小遊戲(超詳細)Python遊戲
- 貪吃蛇完整版小案例
- 貪吃蛇c原始碼原始碼
- Python:遊戲:貪吃蛇Python遊戲
- OpenGL實現貪吃蛇程式碼
- python實現貪吃蛇Python
- Java實現貪吃蛇Java
- Android-貪吃蛇小遊戲-分析與實現-Kotlin語言描述Android遊戲Kotlin
- 【Python】 Python小遊戲-貪吃蛇大冒險Python遊戲
- C語言貪吃蛇原始碼C語言原始碼
- [譯] RxJS 遊戲之貪吃蛇JS遊戲
- C語言小遊戲------貪吃蛇----小白專用C語言遊戲
- GUI 基於Swing製作貪吃蛇小遊戲GUI遊戲
- Python實現貪吃蛇大作戰Python
- 貪吃蛇
- C語言實現桌面貪吃蛇C語言
- c/c++實現簡單的貪吃蛇視覺化遊戲C++視覺化遊戲
- 利用python實現簡易版的貪吃蛇遊戲(面向python小白)Python遊戲
- 純JS實現貪吃蛇遊戲 —— 可能是全網程式碼最優雅的實現。JS遊戲
- JavaScript-開發一個簡單的貪吃蛇小遊戲JavaScript遊戲
- 04 貪吃蛇
- 貪吃蛇jsJS
- 開發Windows貪吃蛇遊戲——(一)前期準備Windows遊戲
- h5+js實現單機版貪吃蛇H5JS
- Python3 貪吃蛇Python
- 《貪吃蛇巴士》:《貪吃蛇》和《瘋狂計程車》的「完美結晶」
- 基於正點原子SRM32F103ZET6精英板(戰艦板)的貪吃蛇小遊戲(附原始碼)遊戲原始碼
- 一步步教你怎麼用python寫貪吃蛇遊戲Python遊戲
- pygame試水,寫一個貪吃蛇GAM
- 用 Python 寫個貪吃蛇,保姆級教程!Python
- 溫習資料演算法—貪吃蛇演算法
- 裝逼的最高境界---一行js程式碼完成一個簡易版的貪吃蛇遊戲JS遊戲
- arduino uno+LCD12864(ST7735S)+藍芽模組實現貪吃蛇UI藍芽模組
- html+js 實現 推箱子 貪吃蛇和簡單的飛機大戰HTMLJS
- canvas吃豆小遊戲程式碼Canvas遊戲
- .NET分散式Orleans - 9 - 貪吃蛇專案演示分散式