亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

JS寫的貪吃蛇游戲(個人練習)

2019-11-20 22:32:59
字體:
來源:轉載
供稿:網友
JS貪吃蛇游戲,個人練習之用,放在這備份一下,
 
復制代碼 代碼如下:

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>JS貪吃蛇-練習</title>
<style type="text/css">
#pannel table {
border-collapse: collapse;
}
#pannel table td {
border: 1px solid #808080;
width: 10px;
height: 10px;
font-size: 0;
line-height: 0;
overflow: hidden;
}
#pannel table .snake {
background-color: green;
}
#pannel table .food {
background-color: blue;
}
</style>
<script type="text/javascript">
var Direction = new function () {
this.UP = 38;
this.RIGHT = 39;
this.DOWN = 40;
this.LEFT = 37;
};
var Common = new function () {
this.width = 20; /*水平方向方格數*/
this.height = 20; /*垂直方向方格數*/
this.speed = 250; /*速度 值越小越快*/
this.workThread = null;
};
var Main = new function () {
var control = new Control();
window.onload = function () {
control.Init("pannel");
/*開始按鈕*/
document.getElementById("btnStart").onclick = function () {
control.Start();
this.disabled = true;
document.getElementById("selSpeed").disabled = true;
document.getElementById("selSize").disabled = true;
};
/*調速度按鈕*/
document.getElementById("selSpeed").onchange = function () {
Common.speed = this.value;
}
/*調大小按鈕*/
document.getElementById("selSize").onchange = function () {
Common.width = this.value;
Common.height = this.value;
control.Init("pannel");
}
};
};
/*控制器*/
function Control() {
this.snake = new Snake();
this.food = new Food();
/*初始化函數,創建表格*/
this.Init = function (pid) {
var html = [];
html.push("<table>");
for (var y = 0; y < Common.height; y++) {
html.push("<tr>");
for (var x = 0; x < Common.width; x++) {
html.push('<td id="box_' + x + "_" + y + '"> </td>');
}
html.push("</tr>");
}
html.push("</table>");
this.pannel = document.getElementById(pid);
this.pannel.innerHTML = html.join("");
};
/*開始游戲 - 監聽鍵盤、創建食物、刷新界面線程*/
this.Start = function () {
var me = this;
this.MoveSnake = function (ev) {
var evt = window.event || ev;
me.snake.SetDir(evt.keyCode);
};
try {
document.attachEvent("onkeydown", this.MoveSnake);
} catch (e) {
document.addEventListener("keydown", this.MoveSnake, false);
}
this.food.Create();
Common.workThread = setInterval(function () {
me.snake.Eat(me.food); me.snake.Move();
}, Common.speed);
};
}
/*蛇*/
function Snake() {
this.isDone = false;
this.dir = Direction.RIGHT;
this.pos = new Array(new Position());
/*移動 - 擦除尾部,向前移動,判斷游戲結束(咬到自己或者移出邊界)*/
this.Move = function () {
document.getElementById("box_" + this.pos[0].X + "_" + this.pos[0].Y).className = "";
//所有 向前移動一步
for (var i = 0; i < this.pos.length - 1; i++) {
this.pos[i].X = this.pos[i + 1].X;
this.pos[i].Y = this.pos[i + 1].Y;
}
//重新設置頭的位置
var head = this.pos[this.pos.length - 1];
switch (this.dir) {
case Direction.UP:
head.Y--;
break;
case Direction.RIGHT:
head.X++;
break;
case Direction.DOWN:
head.Y++;
break;
case Direction.LEFT:
head.X--;
break;
}
this.pos[this.pos.length - 1] = head;
//遍歷畫蛇,同時判斷游戲結束
for (var i = 0; i < this.pos.length; i++) {
var isExits = false;
for (var j = i + 1; j < this.pos.length; j++)
if (this.pos[j].X == this.pos[i].X && this.pos[j].Y == this.pos[i].Y) {
isExits = true;
break;
}
if (isExits) { this.Over();/*咬自己*/ break; }
var obj = document.getElementById("box_" + this.pos[i].X + "_" + this.pos[i].Y);
if (obj) obj.className = "snake"; else { this.Over();/*移出邊界*/ break; }
}
this.isDone = true;
};
/*游戲結束*/
this.Over = function () {
clearInterval(Common.workThread);
alert("游戲結束!");
}
/*吃食物*/
this.Eat = function (food) {
var head = this.pos[this.pos.length - 1];
var isEat = false;
switch (this.dir) {
case Direction.UP:
if (head.X == food.pos.X && head.Y == food.pos.Y + 1) isEat = true;
break;
case Direction.RIGHT:
if (head.Y == food.pos.Y && head.X == food.pos.X - 1) isEat = true;
break;
case Direction.DOWN:
if (head.X == food.pos.X && head.Y == food.pos.Y - 1) isEat = true;
break;
case Direction.LEFT:
if (head.Y == food.pos.Y && head.X == food.pos.X + 1) isEat = true;
break;
}
if (isEat) {
this.pos[this.pos.length] = new Position(food.pos.X, food.pos.Y);
food.Create(this.pos);
}
};
/*控制移動方向*/
this.SetDir = function (dir) {
switch (dir) {
case Direction.UP:
if (this.isDone && this.dir != Direction.DOWN) { this.dir = dir; this.isDone = false; }
break;
case Direction.RIGHT:
if (this.isDone && this.dir != Direction.LEFT) { this.dir = dir; this.isDone = false; }
break;
case Direction.DOWN:
if (this.isDone && this.dir != Direction.UP) { this.dir = dir; this.isDone = false; }
break;
case Direction.LEFT:
if (this.isDone && this.dir != Direction.RIGHT) { this.dir = dir; this.isDone = false; }
break;
}
};
}
/*食物*/
function Food() {
this.pos = new Position();
/*創建食物 - 隨機位置創建立*/
this.Create = function (pos) {
document.getElementById("box_" + this.pos.X + "_" + this.pos.Y).className = "";
var x = 0, y = 0, isCover = false;
/*排除蛇的位置*/
do {
x = parseInt(Math.random() * (Common.width - 1));
y = parseInt(Math.random() * (Common.height - 1));
isCover = false;
if (pos instanceof Array) {
for (var i = 0; i < pos.length; i++) {
if (x == pos[i].X && y == pos[i].Y) {
isCover = true;
break;
}
}
}
} while (isCover);
this.pos = new Position(x, y);
document.getElementById("box_" + x + "_" + y).className = "food";
};
}
function Position(x, y) {
this.X = 0;
this.Y = 0;
if (arguments.length >= 1) this.X = x;
if (arguments.length >= 2) this.Y = y;
}
</script>
</head>
<body>
<div id="pannel" style="margin-bottom: 10px;"></div>
<select id="selSize">
<option value="20">20*20</option>
<option value="30">30*30</option>
<option value="40">40*40</option>
</select>
<select id="selSpeed">
<option value="500">速度-慢</option>
<option value="250" selected="selected">速度-中</option>
<option value="100">速度-快</option>
</select>
<input type="button" id="btnStart" value="開始" />
</body>
</html>
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
成人性生交大片免费看视频直播| 久久国产精品久久久久久久久久| 久久久国产精品免费| 在线免费看av不卡| 中文字幕欧美精品日韩中文字幕| 日本一区二区在线播放| 亚洲欧美另类人妖| 懂色av影视一区二区三区| 中文字幕亚洲欧美在线| 国产成人福利夜色影视| 人人做人人澡人人爽欧美| 日韩美女福利视频| 亚洲无限乱码一二三四麻| 亚洲欧美一区二区三区在线| 亚洲**2019国产| 69av视频在线播放| 亚洲图片欧洲图片av| 久久久午夜视频| 亚洲性日韩精品一区二区| 亚洲国产成人久久综合| 欧美一级成年大片在线观看| 国产精品草莓在线免费观看| 亚洲美女av电影| 久久精品国产欧美亚洲人人爽| 欧美日韩在线免费| 亚洲国产精品久久91精品| 青青久久av北条麻妃海外网| 亚洲欧美综合精品久久成人| 91国产美女视频| 69影院欧美专区视频| 亚洲一区二区中文字幕| 国产丝袜一区二区三区免费视频| 欧美精品成人91久久久久久久| 黑人巨大精品欧美一区二区三区| 亚洲色图35p| 亚洲人线精品午夜| 91在线精品播放| 国产精品自拍视频| 欧美精品第一页在线播放| 亚洲一区二区三区香蕉| 久久久国产一区二区三区| 亚洲第一精品电影| 国产在线不卡精品| 欧美俄罗斯性视频| 国产精品69久久| 成人有码在线播放| 欧美精品video| 91中文字幕在线观看| 精品久久久一区二区| 久久精品影视伊人网| 91中文精品字幕在线视频| 日韩电影大片中文字幕| 欧美日韩另类视频| 亚洲精品视频网上网址在线观看| 国产深夜精品福利| 91成人精品网站| www.久久久久| 欧美国产日产韩国视频| 77777少妇光屁股久久一区| 精品国产乱码久久久久久虫虫漫画| 欧美激情视频三区| 九九精品在线播放| 色偷偷综合社区| 一区二区成人av| 欧美日韩国产精品一区二区不卡中文| 亚洲图中文字幕| 国产精品久久久久av免费| 黄色成人av在线| 亚洲老板91色精品久久| 亚洲xxxx在线| 久久国产精品影片| 国产91露脸中文字幕在线| 91热福利电影| 亚洲美女av在线播放| 精品福利在线视频| 精品国产一区二区三区四区在线观看| 欧美最近摘花xxxx摘花| 欧美日韩高清在线观看| 久久精品久久精品亚洲人| 国产精品扒开腿做爽爽爽的视频| 亚洲欧美www| 国产综合色香蕉精品| 精品视频在线导航| 久久精品中文字幕电影| 国产亚洲欧洲高清| 91青草视频久久| 久久免费视频这里只有精品| 久久精品精品电影网| 精品国产欧美一区二区五十路| 欧美精品在线免费观看| 成人黄色av播放免费| 亚洲天堂第一页| 成人免费看吃奶视频网站| 精品国产鲁一鲁一区二区张丽| 亚洲aaaaaa| 日韩美女av在线免费观看| 亚洲精品福利在线观看| 欧美成人精品在线播放| 国产精品一区二区三区久久久| 国产成一区二区| 欧美日韩免费区域视频在线观看| 日韩欧美极品在线观看| 奇米4444一区二区三区| 91欧美激情另类亚洲| 色综合久久中文字幕综合网小说| 亚洲日本成人网| 亚洲小视频在线观看| 国产精品美女久久久久久免费| 国产成人精品电影久久久| 欧美一区二区三区免费视| 日本三级久久久| 久久精彩免费视频| 亚洲无亚洲人成网站77777| 国产一区二区三区四区福利| 中文字幕亚洲欧美在线| 欧美极品少妇xxxxⅹ喷水| 亚洲成人激情在线| 久久久久久久久久国产精品| 91成人免费观看网站| 久久香蕉国产线看观看av| 亚洲国产精品中文| 久久精品国产免费观看| 欧美成人手机在线| 中文综合在线观看| 日韩欧美国产激情| 中文字幕亚洲一区在线观看| 国产97色在线| 欧美高清视频在线播放| 91香蕉亚洲精品| 日韩av在线网页| www.国产一区| 色噜噜狠狠狠综合曰曰曰88av| 中文字幕一精品亚洲无线一区| 日本伊人精品一区二区三区介绍| 992tv在线成人免费观看| 成人精品在线观看| 国产性猛交xxxx免费看久久| 狠狠躁夜夜躁人人躁婷婷91| 国产精品a久久久久久| 一区二区三区美女xx视频| 国产精品自拍视频| 4388成人网| 欧美激情成人在线视频| 午夜精品福利视频| 国产精品福利在线| 亚洲欧洲午夜一线一品| 国产精品亚洲一区二区三区| 欧美成人免费全部观看天天性色| 国产欧美一区二区三区视频| 国产精品扒开腿爽爽爽视频| 92国产精品久久久久首页| 欧美成人免费小视频| 国产精品普通话| 久久久久久噜噜噜久久久精品| 亚洲第一男人天堂| 精品久久久久久久久久ntr影视| 亚洲欧美成人一区二区在线电影| 欧美一性一乱一交一视频| 久久青草福利网站| 久久亚洲精品小早川怜子66| 亚洲电影免费在线观看| 久久99国产综合精品女同| 欧美一区二区色| 精品欧美国产一区二区三区|