微信:c91374286javascript
不少人學習編程,居然未曾本身動手寫太小遊戲。css
/* 先重置一下 */
* {
padding: 0;
border: 0;
margin: 0;
outline: 0;
box-sizing: border-box;
}
/* 蛇之草地 - 樣式*/
.snake-grassland {
width: 300px; /* 寬度 */
height: 300px; /* 高度 */
background-color: #52af4a; /* 綠色的草地 */
}
複製代碼
<!-- 蛇之草地 - 結構 -->
<div class="snake-grassland"></div>複製代碼
/* 先重置一下 */
* {
padding: 0;
border: 0;
margin: 0;
outline: 0;
box-sizing: border-box;
}
/* 蛇之草地 - 樣式*/
.snake-grassland {
width: 300px; /* 寬度 */
height: 300px; /* 高度 */
background-color: #52af4a; /* 綠色的草地 */
}
/* 行樣式 */
.snake-grassland .line{
height:10%;
}
/* 草地格子 - 樣式 */
.snake-grassland .cell{
width: 10%; /* 寬度佔10分之1 */
height: 100%; /* 高度佔100分之100的行元素高度 */
float: left; /* 每一個格子左浮動 */
border-right: 1px solid #42a03a; /* 格子邊框 */
border-bottom: 1px solid #42a03a; /* 格子邊框 */
}複製代碼
<!-- 格子結構 - 一共10行,代碼太多,只放2行 --> <div class="snake-grassland"> <!-- 第1行 --> <div class="line"> <div class="cell"></div> <div class="cell"></div> <div class="cell"></div> <div class="cell"></div> <div class="cell"></div> <div class="cell"></div> <div class="cell"></div> <div class="cell"></div> <div class="cell"></div> <div class="cell"></div> </div> <!-- 第2行 --> <div class="line"> <div class="cell"></div> <div class="cell"></div> <div class="cell"></div> <div class="cell"></div> <div class="cell"></div> <div class="cell"></div> <div class="cell"></div> <div class="cell"></div> <div class="cell"></div> <div class="cell"></div> </div> <!-- 第3行 --> ... </div>複製代碼
/* 先重置一下 */
* {
padding: 0;
border: 0;
margin: 0;
outline: 0;
box-sizing: border-box;
}
/* 蛇之草地 - 樣式*/
.snake-grassland {
width: 300px; /* 寬度 */
height: 300px; /* 高度 */
background-color: #52af4a; /* 綠色的草地 */
}
/* 行樣式 */
.snake-grassland .line{
height:10%;
}
/* 草地格子 - 樣式 */
.snake-grassland .cell{
width: 10%; /* 寬度佔10分之1 */
height: 100%; /* 高度佔10分之1 */
float: left; /* 每一個格子左浮動 */
border-right: 1px solid #42a03a; /* 格子邊框 */
border-bottom: 1px solid #42a03a; /* 格子邊框 */
}
/* 那一個蛋 - 樣式 */
.snake-grassland .egg{
width: 80%; /* 蛋的寬度 */
height: 80%; /* 蛋的高度 */
margin: 10%; /* 蛋的外間距,讓蛋居中 */
border-radius: 50%; /* 讓蛋變圓,畢竟,沒見過正方形的蛋 */
background-color: #ffc107; /* 讓蛋變黃,固然,你要個紅蛋,綠蛋,也行 */
}
複製代碼
<!-- html - 結構 --> <div class="snake-grassland"> <!-- 第1行 --> <div class="line"> <div class="cell"> <div class="egg"></div> </div> <div class="cell"></div> <div class="cell"></div> <div class="cell"></div> <div class="cell"></div> <div class="cell"></div> <div class="cell"></div> <div class="cell"></div> <div class="cell"></div> <div class="cell"></div> </div> <!-- 第2行 --> ... </div>複製代碼
// 蛋的隨機x軸座標,也就是第幾行
var eggX = Math.floor(Math.random() * 10)複製代碼
// 草地元素
var grasslandElement = document.querySelector("#snake-grassland");
// 蛋的隨機x軸座標,也就是第幾行
var eggX = Math.floor(Math.random() * 10);
// 蛋的隨機y軸座標,也就是第幾列
var eggY = Math.floor(Math.random() * 10);
// 隨機格子元素,也就是蛋須要被放置的元素
// 經過草地元素下面的children line數組對應的隨機數獲取
var eggElement = grasslandElement.children[eggX].children[eggY];
複製代碼
// 草地元素
var grasslandElement = document.querySelector("#snake-grassland");
// 蛋的隨機x軸座標,也就是第幾行
var eggX = Math.floor(Math.random() * 10);
// 蛋的隨機y軸座標,也就是第幾列
var eggY = Math.floor(Math.random() * 10);
// 隨機格子元素,也就是蛋須要被放置的元素
// 經過草地元素下面的children line數組對應的隨機數獲取
var eggElement = grasslandElement.children[eggX].children[eggY];
// 給隨機格子元素放入一個蛋
eggElement.innerHTML = '<div class="egg"></div>';複製代碼
// 蛇元素數組
var snakeArray = [];複製代碼
// 蛇元素數組
var snakeArray = [{x:0,y:0}];
複製代碼
// 蛇元素數組
var snakeArray = [[0,0]];
複製代碼
// 草地元素
var grasslandElement = document.querySelector("#snake-grassland-3");
// 蛋的隨機x軸座標,也就是第幾行
var eggX = Math.floor(Math.random() * 10);
// 蛋的隨機y軸座標,也就是第幾列
var eggY = Math.floor(Math.random() * 10);
// 隨機格子元素,經過草地元素下面的children line數組對應的隨機數獲取
var eggElement = grasslandElement.children[eggX].children[eggY];
// 給隨機格子元素放入一個蛋
eggElement.innerHTML = '<div class="egg"></div>';
// 蛇頭的橫座標
var snakeX = Math.floor(Math.random() * 10);
// 蛇頭的縱座標
var snakeY = Math.floor(Math.random() * 10);
// 貪吃蛇蛇元素數組
var snakeArray = [{ x: snakeX, y: snakeY }];
// 生成貪吃蛇
snakeArray.forEach(function(item, index) {
// 隨機格子元素,表示蛇的位置,同上
var snakeElement = grasslandElement.children[item.x].children[item.y];
// 生成蛇
if (index === 0) {
snakeElement.innerHTML = '<div class="snake snake-head"></div>';
} else {
snakeElement.innerHTML = '<div class="snake snake-body"></div>';
}
});複製代碼
// 監聽鍵盤按下,打印按下的事件
document.addEventListener('keydown',function(event){
console.dir(event);
});複製代碼
// 監聽鍵盤按下
document.addEventListener('keydown',function(event){
// 若是按的是 上
if(event.key === 'ArrowUp'){
snakeHead.x -= 1;
}
// 生成貪吃蛇
snakeArray.forEach(function(item, index) {
// 隨機格子元素,表示蛇的位置,同上
var snakeElement = grasslandElement.children[item.x].children[item.y];
// 生成蛇 - 數組的第一個元素是蛇頭
if (index === 0) {
snakeElement.innerHTML = '<div class="snake snake-head"></div>';
} else {
snakeElement.innerHTML = '<div class="snake snake-body"></div>';
}
});
});複製代碼
// 監聽鍵盤按下
document.addEventListener('keydown',function(event){
console.dir(event);
// 若是按的是 上
if(event.key === 'ArrowUp'){
snakeHead.x -= 1;
}
// 刪除上一個貪吃蛇
grasslandElement.querySelectorAll(".snake").forEach(function(item) {
item.parentElement.removeChild(item);
});
// 生成貪吃蛇
snakeArray.forEach(function(item, index) {
// 隨機格子元素,表示蛇的位置,同上
var snakeElement = grasslandElement.children[item.x].children[item.y];
// 生成蛇 - 數組的第一個元素是蛇頭
if (index === 0) {
snakeElement.innerHTML = '<div class="snake snake-head"></div>';
} else {
snakeElement.innerHTML = '<div class="snake snake-body"></div>';
}
});
});
複製代碼
好了,往上移動的貪吃蛇能夠了。
html
// 上方向鍵控制蛇往上移動
document.addEventListener("keydown", function(event) {
console.dir(event);
// 蛇頭,貪吃蛇數組的第0個元素
var snakeHead = snakeArray[0];
// 若是按的是 上
if (event.key === "ArrowUp") {
snakeHead.x -= 1;
}
// 若是按的是 下
if (event.key === "ArrowDown") {
snakeHead.x += 1;
}
// 若是按的是 左
if (event.key === "ArrowLeft") {
snakeHead.y -= 1;
}
// 若是按的是 右
if (event.key === "ArrowRight") {
snakeHead.y += 1;
}
// 刪除上一個貪吃蛇
grasslandElement.querySelectorAll(".snake").forEach(function(item) {
item.parentElement.removeChild(item);
});
// 生成貪吃蛇
snakeArray.forEach(function(item, index) {
// 隨機格子元素,表示蛇的位置,同上
var snakeElement = grasslandElement.children[item.x].children[item.y];
// 生成蛇 - 數組的第一個元素是蛇頭
if (index === 0) {
snakeElement.innerHTML = '<div class="snake snake-head"></div>';
} else {
snakeElement.innerHTML = '<div class="snake snake-body"></div>';
}
});
});複製代碼
這裏,只展現監聽部分代碼,前面的就不放了,以避免代碼過長。
java
// 蛇頭的橫座標
var snakeX = Math.floor(Math.random() * 10);
// 蛇頭的縱座標
var snakeY = Math.floor(Math.random() * 10);
// 蛇元素數組 - 目前只有一個蛇頭
var snakeArray = [{ x: snakeX, y: snakeY }];複製代碼
var snakeArray = [{ x: x1, y: y1 },{ x: x2, y: y2 },{ x: x3, y: y3 }...{ x: xn, y: yn }];複製代碼
// 草地元素
var grasslandElement = document.querySelector("#snake-grassland");
// 蛋的隨機x軸座標,也就是第幾行
var eggX = Math.floor(Math.random() * 10);
// 蛋的隨機y軸座標,也就是第幾列
var eggY = Math.floor(Math.random() * 10);
// 隨機格子元素,也就是蛋須要被放置的元素
// 經過草地元素下面的children line數組對應的隨機數獲取
var eggElement = grasslandElement.children[eggX].children[eggY];
// 給隨機格子元素放入一個蛋
eggElement.innerHTML = '<div class="egg"></div>';
// 蛇頭的橫座標
var snakeX = Math.floor(Math.random() * 10);
// 蛇頭的縱座標
var snakeY = Math.floor(Math.random() * 10);
// 蛇元素數組 - 目前只有一個蛇頭
var snakeArray = [{ x: snakeX, y: snakeY }];
// 生成貪吃蛇
snakeArray.forEach(function(item, index) {
// 隨機格子元素,表示蛇的位置,同上
var snakeElement = grasslandElement.children[item.x].children[item.y];
// 生成蛇 - 數組的第一個元素是蛇頭
if (index === 0) {
snakeElement.innerHTML = '<div class="snake snake-head"></div>';
} else {
snakeElement.innerHTML = '<div class="snake snake-body"></div>';
}
});
// 上方向鍵控制蛇往上移動
document.addEventListener("keydown", function(event) {
// 蛇頭,貪吃蛇數組的第0個元素
var snakeHead = snakeArray[0];
// 若是按的是 上
if (event.key === "ArrowUp") {
snakeHead.x -= 1;
// 蛇是否吃到蛋
if (snakeHead.x === eggX && snakeHead.y === eggY) {
// 蛋被吃掉了,再生成一個
eggX = Math.floor(Math.random() * 10);
// 蛋的隨機y軸座標,也就是第幾列
eggY = Math.floor(Math.random() * 10);
// 隨機格子元素,經過草地元素下面的children line數組對應的隨機數獲取
eggElement = grasslandElement.children[eggX].children[eggY];
// 給隨機格子元素放入一個蛋
eggElement.innerHTML = '<div class="egg"></div>';
// 蛇尾 - 蛇數組最有一個元素
var snakeTail = snakeArray[snakeArray.length - 1];
snakeArray.push({
x: snakeTail.x - 1,
y: snakeTail.y
});
}
}
// 若是按的是 下
if (event.key === "ArrowDown") {
snakeHead.x += 1;
if (snakeHead.x === eggX && snakeHead.y === eggY) {
// 蛋被吃掉了,再生成一個
eggX = Math.floor(Math.random() * 10);
// 蛋的隨機y軸座標,也就是第幾列
eggY = Math.floor(Math.random() * 10);
// 隨機格子元素,經過草地元素下面的children line數組對應的隨機數獲取
eggElement = grasslandElement.children[eggX].children[eggY];
// 給隨機格子元素放入一個蛋
eggElement.innerHTML = '<div class="egg"></div>';
// 蛇尾 - 蛇數組最有一個元素
var snakeTail = snakeArray[snakeArray.length - 1];
snakeArray.push({
x: snakeTail.x + 1,
y: snakeTail.y
});
}
}
// 若是按的是 左
if (event.key === "ArrowLeft") {
snakeHead.y -= 1;
if (snakeHead.x === eggX && snakeHead.y === eggY) {
// 蛋被吃掉了,再生成一個
eggX = Math.floor(Math.random() * 10);
// 蛋的隨機y軸座標,也就是第幾列
eggY = Math.floor(Math.random() * 10);
// 隨機格子元素,經過草地元素下面的children line數組對應的隨機數獲取
eggElement = grasslandElement.children[eggX].children[eggY];
// 給隨機格子元素放入一個蛋
eggElement.innerHTML = '<div class="egg"></div>';
// 蛇尾 - 蛇數組最有一個元素
var snakeTail = snakeArray[snakeArray.length - 1];
snakeArray.push({
x: snakeTail.x,
y: snakeTail.y + 1
});
}
}
// 若是按的是 右
if (event.key === "ArrowRight") {
snakeHead.y += 1;
if (snakeHead.x === eggX && snakeHead.y === eggY) {
// 蛋被吃掉了,再生成一個
eggX = Math.floor(Math.random() * 10);
// 蛋的隨機y軸座標,也就是第幾列
eggY = Math.floor(Math.random() * 10);
// 隨機格子元素,經過草地元素下面的children line數組對應的隨機數獲取
eggElement = grasslandElement.children[eggX].children[eggY];
// 給隨機格子元素放入一個蛋
eggElement.innerHTML = '<div class="egg"></div>';
// 蛇尾 - 蛇數組最有一個元素
var snakeTail = snakeArray[snakeArray.length - 1];
snakeArray.push({
x: snakeTail.x,
y: snakeTail.y - 1
});
}
}
// 刪除上一個貪吃蛇
grasslandElement.querySelectorAll(".snake").forEach(function(item) {
item.parentElement.removeChild(item);
});
// 生成貪吃蛇
snakeArray.forEach(function(item, index) {
// 隨機格子元素,表示蛇的位置,同上
var snakeElement = grasslandElement.children[item.x].children[item.y];
// 生成蛇 - 數組的第一個元素是蛇頭
if (index === 0) {
snakeElement.innerHTML = '<div class="snake snake-head"></div>';
} else {
snakeElement.innerHTML = '<div class="snake snake-body"></div>';
}
});
});複製代碼
// 草地元素
var grasslandElement = document.querySelector("#snake-grassland");
// 蛋的隨機x軸座標,也就是第幾行
var eggX = Math.floor(Math.random() * 10);
// 蛋的隨機y軸座標,也就是第幾列
var eggY = Math.floor(Math.random() * 10);
// 隨機格子元素,也就是蛋須要被放置的元素
// 經過草地元素下面的children line數組對應的隨機數獲取
var eggElement = grasslandElement.children[eggX].children[eggY];
// 給隨機格子元素放入一個蛋
eggElement.innerHTML = '<div class="egg"></div>';
// 蛇頭的橫座標
var snakeX = Math.floor(Math.random() * 10);
// 蛇頭的縱座標
var snakeY = Math.floor(Math.random() * 10);
// 蛇元素數組 - 目前只有一個蛇頭
var snakeArray = [{ x: snakeX, y: snakeY }];
// 生成貪吃蛇
snakeArray.forEach(function(item, index) {
// 隨機格子元素,表示蛇的位置,同上
var snakeElement = grasslandElement.children[item.x].children[item.y];
// 生成蛇 - 數組的第一個元素是蛇頭
if (index === 0) {
snakeElement.innerHTML = '<div class="snake snake-head"></div>';
} else {
snakeElement.innerHTML = '<div class="snake snake-body"></div>';
}
});
// 上方向鍵控制蛇往上移動
document.addEventListener("keydown", function(event) {
// 蛇頭,貪吃蛇數組的第0個元素
var snakeHead = snakeArray[0];
// 若是按的是 上
if (event.key === "ArrowUp") {
// 遞增移動,佔據前一個位置
var snakeArray2 = [];
snakeArray.forEach(function(item, index) {
if (index === 0) {
snakeArray2.push({
x: snakeArray[index].x - 1,
y: snakeArray[index].y
});
} else {
snakeArray2.push({
x: snakeArray[index - 1].x,
y: snakeArray[index - 1].y
});
}
});
snakeArray = snakeArray2;
// 蛇是否吃到蛋
if (snakeHead.x === eggX && snakeHead.y === eggY) {
// 蛋被吃掉了,再生成一個
eggX = Math.floor(Math.random() * 10);
// 蛋的隨機y軸座標,也就是第幾列
eggY = Math.floor(Math.random() * 10);
// 隨機格子元素,經過草地元素下面的children line數組對應的隨機數獲取
eggElement = grasslandElement.children[eggX].children[eggY];
// 給隨機格子元素放入一個蛋
eggElement.innerHTML = '<div class="egg"></div>';
// 蛇尾 - 蛇數組最有一個元素
var snakeTail = snakeArray[snakeArray.length - 1];
snakeArray.push({
x: snakeTail.x - 1,
y: snakeTail.y
});
}
}
// 若是按的是 下
if (event.key === "ArrowDown") {
// 遞增移動,佔據前一個位置
var snakeArray2 = [];
snakeArray.forEach(function(item, index) {
if (index === 0) {
snakeArray2.push({
x: snakeArray[index].x + 1,
y: snakeArray[index].y
});
} else {
snakeArray2.push({
x: snakeArray[index - 1].x,
y: snakeArray[index - 1].y
});
}
});
snakeArray = snakeArray2;
if (snakeHead.x === eggX && snakeHead.y === eggY) {
// 蛋被吃掉了,再生成一個
eggX = Math.floor(Math.random() * 10);
// 蛋的隨機y軸座標,也就是第幾列
eggY = Math.floor(Math.random() * 10);
// 隨機格子元素,經過草地元素下面的children line數組對應的隨機數獲取
eggElement = grasslandElement.children[eggX].children[eggY];
// 給隨機格子元素放入一個蛋
eggElement.innerHTML = '<div class="egg"></div>';
// 蛇尾 - 蛇數組最有一個元素
var snakeTail = snakeArray[snakeArray.length - 1];
snakeArray.push({
x: snakeTail.x + 1,
y: snakeTail.y
});
}
}
// 若是按的是 左
if (event.key === "ArrowLeft") {
// 遞增移動,佔據前一個位置
var snakeArray2 = [];
snakeArray.forEach(function(item, index) {
if (index === 0) {
snakeArray2.push({
x: snakeArray[index].x,
y: snakeArray[index].y - 1
});
} else {
snakeArray2.push({
x: snakeArray[index - 1].x,
y: snakeArray[index - 1].y
});
}
});
snakeArray = snakeArray2;
if (snakeHead.x === eggX && snakeHead.y === eggY) {
// 蛋被吃掉了,再生成一個
eggX = Math.floor(Math.random() * 10);
// 蛋的隨機y軸座標,也就是第幾列
eggY = Math.floor(Math.random() * 10);
// 隨機格子元素,經過草地元素下面的children line數組對應的隨機數獲取
eggElement = grasslandElement.children[eggX].children[eggY];
// 給隨機格子元素放入一個蛋
eggElement.innerHTML = '<div class="egg"></div>';
// 蛇尾 - 蛇數組最有一個元素
var snakeTail = snakeArray[snakeArray.length - 1];
snakeArray.push({
x: snakeTail.x,
y: snakeTail.y + 1
});
}
}
// 若是按的是 右
if (event.key === "ArrowRight") {
// 遞增移動,佔據前一個位置
var snakeArray2 = [];
snakeArray.forEach(function(item, index) {
if (index === 0) {
snakeArray2.push({
x: snakeArray[index].x,
y: snakeArray[index].y + 1
});
} else {
snakeArray2.push({
x: snakeArray[index - 1].x,
y: snakeArray[index - 1].y
});
}
});
snakeArray = snakeArray2;
if (snakeHead.x === eggX && snakeHead.y === eggY) {
// 蛋被吃掉了,再生成一個
eggX = Math.floor(Math.random() * 10);
// 蛋的隨機y軸座標,也就是第幾列
eggY = Math.floor(Math.random() * 10);
// 隨機格子元素,經過草地元素下面的children line數組對應的隨機數獲取
eggElement = grasslandElement.children[eggX].children[eggY];
// 給隨機格子元素放入一個蛋
eggElement.innerHTML = '<div class="egg"></div>';
// 蛇尾 - 蛇數組最有一個元素
var snakeTail = snakeArray[snakeArray.length - 1];
snakeArray.push({
x: snakeTail.x,
y: snakeTail.y - 1
});
}
}
// 刪除上一個貪吃蛇
grasslandElement.querySelectorAll(".snake").forEach(function(item) {
item.parentElement.removeChild(item);
});
// 生成貪吃蛇
snakeArray.forEach(function(item, index) {
// 隨機格子元素,表示蛇的位置,同上
var snakeElement = grasslandElement.children[item.x].children[item.y];
// 生成蛇 - 數組的第一個元素是蛇頭
if (index === 0) {
snakeElement.innerHTML = '<div class="snake snake-head"></div>';
} else {
snakeElement.innerHTML = '<div class="snake snake-body"></div>';
}
});
});複製代碼
// 遞增移動,佔據前一個位置
var snakeArray2 = [];
snakeArray.forEach(function(item, index) {
if (index === 0) {
snakeArray2.push({
x: snakeArray[index].x - 1,
y: snakeArray[index].y
});
} else {
snakeArray2.push({
x: snakeArray[index - 1].x,
y: snakeArray[index - 1].y
});
}
});
snakeArray = snakeArray2;複製代碼
// 草地元素
var grasslandElement = document.querySelector("#snake-grassland");
// 蛋的隨機x軸座標,也就是第幾行
var eggX = Math.floor(Math.random() * 10);
// 蛋的隨機y軸座標,也就是第幾列
var eggY = Math.floor(Math.random() * 10);
// 隨機格子元素,也就是蛋須要被放置的元素
// 經過草地元素下面的children line數組對應的隨機數獲取
var eggElement = grasslandElement.children[eggX].children[eggY];
// 給隨機格子元素放入一個蛋
eggElement.innerHTML = '<div class="egg"></div>';
// 蛇頭的橫座標
var snakeX = Math.floor(Math.random() * 10);
// 蛇頭的縱座標
var snakeY = Math.floor(Math.random() * 10);
// 蛇元素數組 - 目前只有一個蛇頭
var snakeArray = [{ x: snakeX, y: snakeY }];
// 生成貪吃蛇
snakeArray.forEach(function(item, index) {
// 隨機格子元素,表示蛇的位置,同上
var snakeElement = grasslandElement.children[item.x].children[item.y];
// 生成蛇 - 數組的第一個元素是蛇頭
if (index === 0) {
snakeElement.innerHTML = '<div class="snake snake-head"></div>';
} else {
snakeElement.innerHTML = '<div class="snake snake-body"></div>';
}
});
// 默認自動往右移動
var arrow = "ArrowRight";
// 移動循環函數
function MoveLoop (){
// 蛇頭,貪吃蛇數組的第0個元素
var snakeHead = snakeArray[0];
// 若是按的是 上
if (arrow === "ArrowUp") {
// 遞增移動,佔據前一個位置
var snakeArray2 = [];
snakeArray.forEach(function(item, index) {
if (index === 0) {
snakeArray2.push({
x: snakeArray[index].x - 1,
y: snakeArray[index].y
});
} else {
snakeArray2.push({
x: snakeArray[index - 1].x,
y: snakeArray[index - 1].y
});
}
});
snakeArray = snakeArray2;
// 蛇是否吃到蛋
if (snakeHead.x === eggX && snakeHead.y === eggY) {
// 蛋被吃掉了,再生成一個
eggX = Math.floor(Math.random() * 10);
// 蛋的隨機y軸座標,也就是第幾列
eggY = Math.floor(Math.random() * 10);
// 隨機格子元素,經過草地元素下面的children line數組對應的隨機數獲取
eggElement = grasslandElement.children[eggX].children[eggY];
// 給隨機格子元素放入一個蛋
eggElement.innerHTML = '<div class="egg"></div>';
// 蛇尾 - 蛇數組最有一個元素
var snakeTail = snakeArray[snakeArray.length - 1];
snakeArray.push({
x: snakeTail.x - 1,
y: snakeTail.y
});
}
}
// 若是按的是 下
if (arrow === "ArrowDown") {
// 遞增移動,佔據前一個位置
var snakeArray2 = [];
snakeArray.forEach(function(item, index) {
if (index === 0) {
snakeArray2.push({
x: snakeArray[index].x + 1,
y: snakeArray[index].y
});
} else {
snakeArray2.push({
x: snakeArray[index - 1].x,
y: snakeArray[index - 1].y
});
}
});
snakeArray = snakeArray2;
if (snakeHead.x === eggX && snakeHead.y === eggY) {
// 蛋被吃掉了,再生成一個
eggX = Math.floor(Math.random() * 10);
// 蛋的隨機y軸座標,也就是第幾列
eggY = Math.floor(Math.random() * 10);
// 隨機格子元素,經過草地元素下面的children line數組對應的隨機數獲取
eggElement = grasslandElement.children[eggX].children[eggY];
// 給隨機格子元素放入一個蛋
eggElement.innerHTML = '<div class="egg"></div>';
// 蛇尾 - 蛇數組最有一個元素
var snakeTail = snakeArray[snakeArray.length - 1];
snakeArray.push({
x: snakeTail.x + 1,
y: snakeTail.y
});
}
}
// 若是按的是 左
if (arrow === "ArrowLeft") {
// 遞增移動,佔據前一個位置
var snakeArray2 = [];
snakeArray.forEach(function(item, index) {
if (index === 0) {
snakeArray2.push({
x: snakeArray[index].x,
y: snakeArray[index].y - 1
});
} else {
snakeArray2.push({
x: snakeArray[index - 1].x,
y: snakeArray[index - 1].y
});
}
});
snakeArray = snakeArray2;
if (snakeHead.x === eggX && snakeHead.y === eggY) {
// 蛋被吃掉了,再生成一個
eggX = Math.floor(Math.random() * 10);
// 蛋的隨機y軸座標,也就是第幾列
eggY = Math.floor(Math.random() * 10);
// 隨機格子元素,經過草地元素下面的children line數組對應的隨機數獲取
eggElement = grasslandElement.children[eggX].children[eggY];
// 給隨機格子元素放入一個蛋
eggElement.innerHTML = '<div class="egg"></div>';
// 蛇尾 - 蛇數組最有一個元素
var snakeTail = snakeArray[snakeArray.length - 1];
snakeArray.push({
x: snakeTail.x,
y: snakeTail.y + 1
});
}
}
// 若是按的是 右
if (arrow === "ArrowRight") {
// 遞增移動,佔據前一個位置
var snakeArray2 = [];
snakeArray.forEach(function(item, index) {
if (index === 0) {
snakeArray2.push({
x: snakeArray[index].x,
y: snakeArray[index].y + 1
});
} else {
snakeArray2.push({
x: snakeArray[index - 1].x,
y: snakeArray[index - 1].y
});
}
});
snakeArray = snakeArray2;
if (snakeHead.x === eggX && snakeHead.y === eggY) {
// 蛋被吃掉了,再生成一個
eggX = Math.floor(Math.random() * 10);
// 蛋的隨機y軸座標,也就是第幾列
eggY = Math.floor(Math.random() * 10);
// 隨機格子元素,經過草地元素下面的children line數組對應的隨機數獲取
eggElement = grasslandElement.children[eggX].children[eggY];
// 給隨機格子元素放入一個蛋
eggElement.innerHTML = '<div class="egg"></div>';
// 蛇尾 - 蛇數組最有一個元素
var snakeTail = snakeArray[snakeArray.length - 1];
snakeArray.push({
x: snakeTail.x,
y: snakeTail.y - 1
});
}
}
// 刪除上一個貪吃蛇
grasslandElement.querySelectorAll(".snake").forEach(function(item) {
item.parentElement.removeChild(item);
});
// 生成貪吃蛇
snakeArray.forEach(function(item, index) {
// 隨機格子元素,表示蛇的位置,同上
var snakeElement = grasslandElement.children[item.x].children[item.y];
// 生成蛇 - 數組的第一個元素是蛇頭
if (index === 0) {
snakeElement.innerHTML = '<div class="snake snake-head"></div>';
} else {
snakeElement.innerHTML = '<div class="snake snake-body"></div>';
}
});
}
// 上方向鍵控制蛇往上移動
document.addEventListener("keydown", function(event) {
// 賦值全局方向變量
arrow = event.key;
// 執行依次移動函數
MoveLoop();
});
setInterval(function(){
MoveLoop();
},500);複製代碼