JS版本_貪喫蛇

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>貪喫蛇</title>
<style type="text/css">
.Table table {
	border-collapse: collapse;
}

.Table table td {
	border: 1px solid #808080;
	width: 10px;
	height: 10px;
	font-size: 0;
	line-height: 0;
	overflow: hidden;
}

.snake {
	background-color: green;
}

.food {
	background-color: blue;
}
</style>
<script type="text/javascript" language="javascript">
<!--初始化參數-->
	var interval0 = null;
	var interval1 = null;
	var interval2 = null;
	var interval3 = null;
	var interval4 = null;
	var flag = 39;
	var one = true;
	var array = new Array();
	var i = 0, j = 0, t = 0, s = 0;
	var xx = new Array(10000);
	var yy = new Array(10000);
	var speedd = 100;
	<!--繪製表格-->
	function PannelTable() {
		document.getElementById("table").innerHTML = "";
		this.pt = function(x, y) {
			this.x = x;
			this.y = y;
			/*var t = document.createElement("table");
			var b = document.createElement("tbody");
			for (var i = 0; i < x; i++) {
				var r = document.createElement("tr");
				for (var j = 0; j < y; j++) {
					var c = document.createElement("td");
					var m = document.createTextNode("2");
					c.appendChild(m);
					r.appendChild(c);
				}
				b.appendChild(r);
			}
			t.appendChild(b);
			document.getElementById("table").appendChild(t);*/
			var html = [];
			html.push("<table>");
			for (var i = 0; i < x; i++) {
				html.push("<tr>");
				for (var j = 0; j < y; j++) {
					html.push('<td id="box_' + i + "_" + j + '"> </td>');
				}
				html.push("</tr>");
			}
			html.push("</table>");
			this.pannel = document.getElementById("table");
			this.pannel.innerHTML = html.join("");
			for (var i = 0; i < x; i++) {
				array[i] = new Array();
				for (var j = 0; j < y; j++) {
					array[i][j] = 0;
				}
			}
			for (var g = 0; g <10000; g++) {
				xx[g] = 0;
				yy[g] = 0;
			}
			var food_x = Math.floor(Math.random() * (x-3) + 1);
			var food_y = Math.floor(Math.random() * (y-3) + 1);
			array[food_x][food_y] = 2;
		}
	}
	<!--選擇表格的樣式-->
	function Main(x, y) {
		new PannelTable().pt(x, y);
	}
	<!--選擇速度-->
	function Speed(speed){
		speedd = speed;
	}
	<!--畫蛇-->
	function PaintSnake(array) {
		for (var i = 0; i < array.length; i++) {
			for (var j = 0; j < array[i].length; j++) {
				if (array[i][j] == 1) {
					document.getElementById("box_" + i + "_" + (j))
							.setAttribute("class", "snake");
				} else if (array[i][j] == 0) {
					document.getElementById("box_" + (i) + "_" + (j))
							.setAttribute("class", "");
				} else {
					document.getElementById("box_" + (i) + "_" + (j))
							.setAttribute("class", "food");
				}
			}
		}
	}
	<!--清空-->
	function ClearSnake(array) {
		for (var i = 0; i < array.length; i++) {
			for (var j = 0; j < array[i].length; j++) {
				array[i][j] = 0;
			}
		}
	}
	<!--點擊開始創建蛇-->
	function Start() {
		if (one == true) {
			document.getElementById("box_0_0").setAttribute("class", "snake");
			array[0][0] = 1;
			xx[t] = 0;
			yy[t++] = 0;
			interval0 = setInterval("Init0()",speedd);
			one = false;
		}
	}
	function Init0() {
		if (j > array[i].length - 1) {
			ClearSnake(array);
			PaintSnake(array);
			window.alert("遊戲結束");
			clearInterval(interval0);
			return;
		} else {
			if (array[i][j + 1] == 2) {
				if (j+2>=array[i].length-1){
					ClearSnake(array);
					PaintSnake(array);
					window.alert("遊戲結束");
					clearInterval(interval0);
					return;
				}
				do {
					var food_x = Math.floor(Math.random() * (array.length-3) + 1);
					var food_y = Math
							.floor(Math.random() * (array[i].length-3) + 1);
				} while (array[food_x][food_y] == 1||(food_x==0&&food_y==0)||(food_x==0&&food_y==array[i].length-1)||(food_x==array.length-1&&food_y==0)||(food_x==array.length-1&&food_y==array[i].length-1));
				array[food_x][food_y] = 2;
				array[i][++j] = 1;
				xx[t] = i;
				yy[t++] = j;
				PaintSnake(array);
			} else if(array[i][j + 1] == 0){
				array[xx[s]][yy[s++]] = 0;
				array[i][++j] = 1;
				xx[t] = i;
				yy[t++] = j;
				PaintSnake(array);
			}else{
				ClearSnake(array);
				PaintSnake(array);
				window.alert("遊戲結束");
				clearInterval(interval0);
				return;
			}
		}
	}
	<!--控制方向-->
	function Init(Flag) {
		if (Flag == 37 && flag != 39) {
			if (j <= 0) {
				ClearSnake(array);
				PaintSnake(array);
				window.alert("遊戲結束");
				clearInterval(interval1);
				return;
			} else {
				if (array[i][j - 1] == 2) {
					if(j-2<0){
						ClearSnake(array);
						PaintSnake(array);
						window.alert("遊戲結束");
						clearInterval(interval1);
						return;
					}
					do {
						var food_x = Math.floor(Math.random() * (array.length-3)
								+ 1);
						var food_y = Math.floor(Math.random() * (array[i].length-3)
								+ 1);
					} while (array[food_x][food_y] == 1||(food_x==0&&food_y==0)||(food_x==0&&food_y==array[i].length-1)||(food_x==array.length-1&&food_y==0)||(food_x==array.length-1&&food_y==array[i].length-1));
					array[food_x][food_y] = 2;
					array[i][--j] = 1;
					xx[t] = i;
					yy[t++] = j;
					PaintSnake(array);
				} else if(array[i][j - 1] == 0){
					array[xx[s]][yy[s++]] = 0;
					array[i][--j] = 1;
					xx[t] = i;
					yy[t++] = j;
					PaintSnake(array);
				}else{
					ClearSnake(array);
					PaintSnake(array);
					window.alert("遊戲結束");
					clearInterval(interval1);
					return;
				}
			}
			flag = 37;
		} else if (Flag == 38 && flag != 40) {
			if (i <= 0) {
				ClearSnake(array);
				PaintSnake(array);
				window.alert("遊戲結束");
				clearInterval(interval2);
				return;
			} else {
				
				if (array[i - 1][j] == 2) {
					if(i-2<0){
						ClearSnake(array);
						PaintSnake(array);
						window.alert("遊戲結束");
						clearInterval(interval2);
						return;
					}
					do {
						var food_x = Math.floor(Math.random() * (array.length-3)
								+ 1);
						var food_y = Math.floor(Math.random() * (array[i].length-3)
								+ 1);
					} while (array[food_x][food_y] == 1||(food_x==0&&food_y==0)||(food_x==0&&food_y==array[i].length-1)||(food_x==array.length-1&&food_y==0)||(food_x==array.length-1&&food_y==array[i].length-1));
					array[food_x][food_y] = 2;

					array[--i][j] = 1;
					xx[t] = i;
					yy[t++] = j;
					PaintSnake(array);
				} else if(array[i - 1][j] == 0) {
					array[xx[s]][yy[s++]] = 0;
					array[--i][j] = 1;
					xx[t] = i;
					yy[t++] = j;
					PaintSnake(array);
				}else{
					ClearSnake(array);
					PaintSnake(array);
					window.alert("遊戲結束");
					clearInterval(interval2);
					return;
				}
			}
			flag = 38;
		} else if (Flag == 39 && flag != 37) {
			if (j > array[i].length - 1) {
				ClearSnake(array);
				PaintSnake(array);
				window.alert("遊戲結束");
				clearInterval(interval3);
				return;
			} else {
				
				if (array[i][j + 1] == 2) {
					if(j+2>array[i].length-1){
						ClearSnake(array);
						PaintSnake(array);
						window.alert("遊戲結束");
						clearInterval(interval3);
						return;
					}
					do {
						var food_x = Math.floor(Math.random() * (array.length-3)
								+ 1);
						var food_y = Math.floor(Math.random() * (array[i].length-3)
								+ 1);
					} while (array[food_x][food_y] == 1||(food_x==0&&food_y==0)||(food_x==0&&food_y==array[i].length-1)||(food_x==array.length-1&&food_y==0)||(food_x==array.length-1&&food_y==array[i].length-1));
					array[food_x][food_y] = 2;
			
					array[i][++j] = 1;
					xx[t] = i;
					yy[t++] = j;
					PaintSnake(array);
				} else if(array[i][j + 1] == 0) {
					array[xx[s]][yy[s++]] = 0;
					array[i][++j] = 1;
					xx[t] = i;
					yy[t++] = j;
					PaintSnake(array);
				}else{
					ClearSnake(array);
					PaintSnake(array);
					window.alert("遊戲結束");
					clearInterval(interval3);
					return;
				}

			}
			flag = 39;
		} else if (Flag == 40 && flag != 38) {
			if (i > array[i].length - 2) {
				ClearSnake(array);
				PaintSnake(array);
				window.alert("遊戲結束");
				clearInterval(interval4);
				return;
			} else {
				
				if (array[i + 1][j] == 2) {
					if(i+2>array.length-1){
						ClearSnake(array);
						PaintSnake(array);
						window.alert("遊戲結束");
						clearInterval(interval4);
						return;
					}
					do {
						var food_x = Math.floor(Math.random() * (array.length-3)
								+ 1);
						var food_y = Math.floor(Math.random() * (array[i].length-3)
								+ 1);
					} while (array[food_x][food_y] == 1||(food_x==0&&food_y==0)||(food_x==0&&food_y==array[i].length-1)||(food_x==array.length-1&&food_y==0)||(food_x==array.length-1&&food_y==array[i].length-1));
					array[food_x][food_y] = 2;
					
					array[++i][j] = 1;
					xx[t] = i;
					yy[t++] = j;
					PaintSnake(array);
				} else if(array[i + 1][j] == 0){
					array[xx[s]][yy[s++]] = 0;
					array[++i][j] = 1;
					xx[t] = i;
					yy[t++] = j;
					PaintSnake(array);
				}else{
					ClearSnake(array);
					PaintSnake(array);
					window.alert("遊戲結束");
					clearInterval(interval4);
					return;
				}
			}
			flag = 40;
		}
	}
	function Move(Event) {
		if (Event.keyCode == 37) {
			if (flag != 37) {
				clearInterval(interval2);
				clearInterval(interval4);
				clearInterval(interval1);
				interval1 = setInterval("Init(37)", speedd);
			}
		} else if (Event.keyCode == 38) {
			if (flag != 38) {
				clearInterval(interval0);
				clearInterval(interval1);
				clearInterval(interval3);
				clearInterval(interval2);
				interval2 = setInterval("Init(38)", speedd);
			}
		} else if (Event.keyCode == 39) {
			if (flag != 39) {
				clearInterval(interval2);
				clearInterval(interval4);
				clearInterval(interval0);
				clearInterval(interval3);
				interval3 = setInterval("Init(39)", speedd);
			}
		} else if (Event.keyCode == 40) {
			if (flag != 40) {
				clearInterval(interval0);
				clearInterval(interval1);
				clearInterval(interval3);
				clearInterval(interval4);
				interval4 = setInterval("Init(40)", speedd);
			}
		} else {

			
			
			
			
			
			
		}
	}
	function Reflsh(){
		window.location.href=window.location.href;
	}
</script>
</head>
<body style="background-color: rgb(208, 223, 239);"
	οnkeydοwn="Move(event)">
	<select id="select1"
		style="font-family: 微軟雅黑; height: 25px; margin-right: 10px;">
		<option selected="selected"><--請選擇地圖大小--></option>
		<option οnclick="Main(20,20)">20*20</option>
		<option οnclick="Main(30,30)">30*30</option>
		<option οnclick="Main(35,50)">35*50</option>
		<option οnclick="Main(35,60)">35*60</option>
	</select>
	<select style="font-family: 微軟雅黑; height: 25px; margin-right: 10px;">
		<option selected="selected"><--請選擇難度--></option>
		<option οnclick="Speed(1000)">初級難度</option>
		<option οnclick="Speed(500)">中級難度</option>
		<option οnclick="Speed(100)">高級難度</option>
	</select>
	<div id="table" class="Table" style="margin-top: 20px;"></div>
	<br>
	<input type="button" value="開始遊戲"
		style="font-family: 微軟雅黑; height: 25px; margin-right: 10px;"
		οnclick="Start()"></input>
	<input type="button" value="重新開始"
		style="font-family: 微軟雅黑; height: 25px; margin-right: 10px;" οnclick="Reflsh()"></input>
</body>
</html>

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章