网页版方格贪吃蛇游戏html源码分享

网页版方格贪吃蛇游戏html源码分享插图

html源码,要做网页的话复制源码新建一个文本文档粘贴进去,然后文本文档改名index.html即可。

玩法:用键盘的上下左右控制。

<!DOCTYPE html>
<html>
<head>
	<title>贪吃蛇-小高教学网www.12580sky.com</title>
	<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" /> 
	<style type=\"text/css\">
		.backDiv {
			text-align: center;
			position:absolute;
			top:20px;
			left:300px;
			width:820px;
			height:550px;
		}
		.display {
			position:absolute;
			top:0px;
			left:685px;
			width:180px;
			height:510px;
			border: 5px solid black;
			background-color: #ccffff;
		}
		#gamePanel table {
			border-collapse: collapse;/*合并单元格边框*/
			border: 5px solid black;
			background-color: #f0f0f0;
		}
		#gamePanel td {
			width:15px;
			height:15px;
		}
		#scoreDiv {
			position: absolute;
			top: 20px;
			left:20px;
			text-align: left;
			font-size: 20px;
			font-weight: bold;
		}
		#prompt {
			position: absolute;
			top: 180px;
			left: 20px;
			text-align: left;
			font-weight: bold;
		}
		#operator {
			position: absolute;
			top:550px;
			left:100px;
		}
		#result {
			position: absolute;
			top:200px;
			left:220px;
			background-color: #00ffff;
			font-size: 20px;
			font-weight: bold;
			text-align: left;
			padding: 20px;
		}
	</style>
	<script>
	var snake = [];// 蛇数组
	var barrers = [];// 障碍物数组
	var game = {sizeX:\"30\",sizeY:\"40\",record:\"0\"};
	var appearTime = disappearTime =  0;// 超级食物出现
	var superFoodX = superFoodY = null;
	var color = 0;// 食物颜色
	function init(){
		clearTimeout(game.time);
		snake = [];
		barrers = [];
		game.x = 0;game.y = 1;
		game.dir = null;
		game.direction = \"right\";
		game.rate = null;
		game.lengths = 2;// 蛇的长度
		game.score = 0;
		$(\"scoreDiv\").innerHTML = \"得分:\"+game.score+\"<br/><br/>长度:\"+ game.lengths+\"<br/><br/>\"+\"最高分:\"+game.record;
		$(\"pass\").disabled = false;
		$(\"rate\").disabled = false;
		$(\"start\").disabled = false;
		bord();// 设置界面
		barrer();// 设置障碍物
		$(\"result\").style.visibility = \"hidden\";
		snake.push(\"tb_\" + game.x + \"_\" + (game.y-1));
		snake.push(\"tb_\" + game.x + \"_\" + game.y);// 蛇头
	}
	function $(id){
		return document.getElementById(id);
	}
	// 表格
	function bord(){
		var panel = [];// 游戏面板
		var proPanel = [];// 提示面板
		panel.push(\"<table>\");
		for(var i=0; i<game.sizeX; i++){
			panel.push(\"<tr>\");
			for(var j=0; j<game.sizeY; j++){
				panel.push(\'<td id=\"tb_\' + i + \"_\" + j + \'\" > </td>\');
			}
			panel.push(\"</tr>\");
		}
		panel.push(\"</table>\");
		$(\"gamePanel\").innerHTML = panel.join(\"\");
		proPanel.push(\"<table>\");
		proPanel.push(\'<tr>\'+\'<td width=\"20px\" height=\"20px\" bgcolor=\"#ff3300\"></td>\' + \'<td>h得分+10</td>\'+\'</tr>\');
		proPanel.push(\'<tr>\'+\'<td width=\"20px\" height=\"20px\" bgcolor=\"#33cc33\"></td>\' + \'<td>h得分+30</td>\'+\'</tr>\');
		proPanel.push(\'<tr>\'+\'<td width=\"20px\" height=\"20px\" bgcolor=\"#99ff66\"></td>\' + \'<td>h得分+50</td>\'+\'</tr>\');
		proPanel.push(\'<tr>\'+\'<td width=\"20px\" height=\"20px\" bgcolor=\"#ffff00\"></td>\' + \'<td>h得分+100</td>\'+\'</tr>\');
		proPanel.push(\'<tr>\'+\'<td width=\"20px\" height=\"20px\" bgcolor=\"#006600\"></td>\' + \'<td>h得分-30</td>\'+\'</tr>\');
		proPanel.push(\'<tr>\'+\'<td width=\"20px\" height=\"20px\" bgcolor=\"#000000\"></td>\' + \'<td>h得分-50</td>\');
		proPanel.push(\"</table>\");
		$(\"prompt\").innerHTML = proPanel.join(\"\");
	}
	// 关卡障碍物设置
	function barrer() {
		var passValue = $(\"pass\").value;
		for(var i=0; i<barrers.length; i++) {
			$(barrers[i]).style.backgroundColor = \"\";
		}
		barrers = [];
		if(passValue == 2) {
			for(var i=8; i<game.sizeX-8; i++) {
				barrers.push(\"tb_\" + i + \"_\" + 10);
				barrers.push(\"tb_\" + i + \"_\" + (game.sizeY-10));
			}
		}
		if(passValue == 3) {
			for(var i=8; i<game.sizeY-8; i++) {
				barrers.push(\"tb_\" + Math.floor(game.sizeX/2) + \"_\" + i);
			}
			for(var i=6; i<game.sizeX-6; i++) {
				barrers.push(\"tb_\" + i + \"_\" + Math.floor(game.sizeY/2));
			}
		}
		if(passValue == 4) {
			for(var i=12; i<game.sizeY-11; i++) {
				barrers.push(\"tb_\" + Math.floor(game.sizeX/2) + \"_\" + i);
			}
			for(var j=6; j<game.sizeX-6; j++) {
				barrers.push(\"tb_\" + j + \"_\" + Math.floor(game.sizeY/2+1));
			}
			for(var i=6; i<game.sizeX-6; i++) {
				if(i < game.sizeX/2) {barrers.push(\"tb_\"+i+\"_\"+12);}
				else{barrers.push(\"tb_\"+i+\"_\"+(game.sizeY-11));}
			}
			for(var j=12; j<game.sizeY-11; j++) {
				if(j <= game.sizeY/2) {barrers.push(\"tb_\"+(game.sizeX-7)+\"_\"+j);}
				else {barrers.push(\"tb_\"+6+\"_\"+(j+1));}
			}
		}
		if(passValue == 5) {
			for(var i=0; i<14; i++) {
				barrers.push(\"tb_\" + 7 + \"_\" + i);
				barrers.push(\"tb_\" + (game.sizeX-8) + \"_\" + (game.sizeY-i-1));
			}
			for(var i=15; i<25; i++) {
				if(i < 18 || i > 21){
					barrers.push(\"tb_\"+10 +\"_\"+i);
					barrers.push(\"tb_\"+(game.sizeX-11)+\"_\"+i);
				}
			}
			for(var i=0; i<9; i++) {
				barrers.push(\"tb_\" + i + \"_\" + (game.sizeY-13));
				barrers.push(\"tb_\" + (game.sizeX-i-1) + \"_\" + 12);
			}
			for(var i=11; i<19; i++) {
				if(i < 13 || i > 16){
					barrers.push(\"tb_\"+i+\"_\"+15);
					barrers.push(\"tb_\"+i+\"_\"+(game.sizeY-16));
				}
			}
		}
		// 设置障碍物颜色
		for(var i=0; i<barrers.length; i++) {
			$(barrers[i]).style.backgroundColor = \"#660033\";
		}
	}
	// 开始游戏
	function startGame() {
		food();
		game.start = true;
		$(\"pass\").disabled = true;
		$(\"rate\").disabled = true;
		$(\"start\").disabled = true;
		game.rate = $(\"rate\").value;
		$(snake[0]).style.backgroundColor = \"#0066ff\";
		$(snake[1]).style.backgroundColor = \"blue\";
		game.time = setTimeout(function(){
			snakeMove();
		},game.rate);
		superFood();
	}
	// 蛇移动 速度,方向
	function snakeMove() {
		if(game.direction == \"right\") {game.y += 1; }// 右移
		if(game.direction == \"left\") {game.y -= 1; }// 左移
		if(game.direction == \"up\") {game.x -= 1; }// 上移
		if(game.direction == \"down\") {game.x += 1; }// 下移
		// 判断游戏是否结束
		if(result() == true) {
			clearTimeout(game.time); clearTimeout(appearTime); clearTimeout(disappearTime);
			game.start = false;
			var res = \"游戏结束!<br/>\";
			if(game.score > game.record){
				res += \"恭喜你破纪录啦!<br/>\";
				$(\"scoreDiv\").innerHTML = \"得分:\" + game.score + \"<br/><br/>最高分:\" + game.record;
			}
			res += \"您的得分为:\" + game.score + \"<br/>长度:\"+game.lengths;
			$(\"result\").style.visibility = \"visible\";
			$(\"result\").innerHTML = res;
			return;
		}
		if(game.x==game.fx && game.y==game.fy) {eat(1);}
		if(game.x==superFoodX && game.y==superFoodY) {eat(2);}
		move();
		game.time = setTimeout(function() {
			snakeMove(game.rate,game.direction);
		},game.rate);
	}
	function move() {
		$(snake[0]).style.backgroundColor = \"\";
		// 保留蛇当前的位置
		for(var i=1; i<snake.length; i++) {
			snake[i-1] = snake[i];
		}
		snake[snake.length-1] = \"tb_\" + game.x + \"_\" + game.y;// 蛇头位置
		for(var i=0; i<snake.length-1; i++) {
			$(snake[i]).style.backgroundColor = \"#0066ff\";
		}
		$(snake[i]).style.backgroundColor = \"blue\";
	}
	// 食物 位置随机且不能与蛇位置重复
	function food() {
		game.fx = Math.floor(Math.random(game.sizeX)*game.sizeX);
		game.fy = Math.floor(Math.random(game.sizeY)*game.sizeY);
		if($(\"tb_\" + game.fx + \"_\" + game.fy).style.backgroundColor != \"\") {food(); }
		else {$(\"tb_\" + game.fx + \"_\" + game.fy).style.backgroundColor = \"#ff3300\"; }
	}
	// 超级食物出现
	function superFood() {
		appearTime = setTimeout(function(){
			var n = Math.floor(Math.random(10)*10);
			superFoodX = Math.floor(Math.random(game.sizeX)*game.sizeX);
			superFoodY = Math.floor(Math.random(game.sizeY)*game.sizeY);
			if($(\"tb_\" + superFoodX + \"_\" + superFoodY).style.backgroundColor != \"\") {superFood(); }
			else{
				if((\"tb_\" + superFoodX + \"_\" + superFoodY) == (\"tb_\" + game.fx + \"_\" + game.fy)){superFood(); return ;}
				if(n < 3){$(\"tb_\" + superFoodX + \"_\" + superFoodY).style.backgroundColor = \"#33cc33\"; color = 0;}
				else if(3 <= n && n < 5){$(\"tb_\" + superFoodX + \"_\" + superFoodY).style.backgroundColor = \"#006600\"; color = 1;}
				else if(5 <= n && n < 7){$(\"tb_\" + superFoodX + \"_\" + superFoodY).style.backgroundColor = \"#99ff66\"; color = 2;}
				else if(7 <= n && n < 9){$(\"tb_\" + superFoodX + \"_\" + superFoodY).style.backgroundColor = \"#000000\"; color = 3;}
				else {$(\"tb_\" + superFoodX + \"_\" + superFoodY).style.backgroundColor = \"#ffff00\"; color = 4;}
				clearTimeout(disappearTime);
				superFood();
				// 一定时间后超级食物消失
				disappearTime = setTimeout(function(){
					$(\"tb_\" + superFoodX + \"_\" + superFoodY).style.backgroundColor = \"\";
					superFoodX = superFoodY = null;
				},game.rate*120-game.rate*50);
			}
		},game.rate*120);
	}
	// 蛇吃食物
	function eat(ef) {
		// 吃普通食物
		if(ef == 1) {snake.push(\"tb_\" + game.fx + \"_\" + game.fy); game.score += 10; food();}
		// 吃超级食物
		if(ef == 2) {
			if(color == 0) {game.score += 30;}
			else if(color == 1) {game.score -= 30;}
			else if(color == 2) {game.score += 50;}
			else if(color == 3) {game.score -= 50;}
			else {game.score += 100;}
			snake.push(\"tb_\" + superFoodX + \"_\" + superFoodY);
			if(game.score < 0) {game.score = 0;}
			clearTimeout(disappearTime);
		}
		game.lengths += 1;
		$(\"scoreDiv\").innerHTML = \"得分:\"+game.score+\"<br/><br/>长度:\"+game.lengths+\"<br/><br/>最高分:\"+game.record;
	}
	// 游戏结束
	function result() {
		var next = \"tb_\" + game.x + \"_\" + game.y;
		if(game.x<0 || game.x>=game.sizeX || game.y<0 || game.y>=game.sizeY) {return true;}
		for(var i=0; i<snake.length; i++) {if(next == snake[i]) {return true;}}
		for(var i=0; i<barrers.length; i++) {if(next == barrers[i]) {return true;}}
		return false;
	}
	// 键盘控制
	function control(v) {
		var evt = v;
		game.dir = game.direction;
		if(37 <= evt.keyCode && evt.keyCode <= 40 && game.start){
			if(evt.keyCode == 37){game.dir==\"right\" ? game.direction = \"right\":game.direction = \"left\";}// 左
			if(evt.keyCode == 38){game.dir==\"down\" ? game.direction = \"down\" : game.direction = \"up\";}// 上
			if(evt.keyCode == 39){game.dir==\"left\" ? game.direction = \"left\" : game.direction = \"right\";}// 右
			if(evt.keyCode == 40){game.dir==\"up\" ? game.direction = \"up\" : game.direction = \"down\";}// 下
			if(game.dir != game.direction){clearTimeout(game.time); snakeMove(); }
		}
	}
	</script>
</head>
<body onload=\"init();\" onkeyup=\"control(event);\" >
<div class=\"backDiv\">
	<div class=\"display\">
		<div id=\"scoreDiv\">分数:0</div><br/>
		<div id=\"prompt\"></div>
	</div>
	<div id=\"gamePanel\" ></div><br/>
	<div id=\"operator\">
		选择关卡:<select id=\"pass\" onchange=\"barrer();\">
			<option value=\"1\">关卡1</option>
			<option value=\"2\">关卡2</option>
			<option value=\"3\">关卡3</option>
			<option value=\"4\">关卡4</option>
			<option value=\"5\">关卡5</option>
		</select>hh
		速度:<select id=\"rate\">
			<option value=\"500\">慢</option>
			<option value=\"250\">中</option>
			<option value=\"100\">快</option>
		</select>hh
		<input type=\"button\" id=\"start\" value=\"开始\" onclick=\"startGame();\" />hh
		<input type=\"button\" id=\"resets\" value=\"重玩\" onclick=\"init();\" />
	</div>
	<div id=\"result\"></div>
</div>
<div style=\"text-align:center;\">
<p><a href=\"http://www.12580sky.com\" target=\"_blank\">小高教学网</a></p>
</div>
</body>
</html>
上一篇 首次打开网站里的链接自动弹出百度搜索页面增加展现量代码
下一篇 蓝色给自己的网站加一个好看的跳转页面代码

探索站点内容

搜索文章、标签、分类

关注公众号
领美团外卖神券
领美团外卖神券
最新评论
dadaowokou
dadaowokou
10月22日
求更新的
日月先生
日月先生
10月8日
留个言看看
小高网
小高网
10月4日
有更新本帖会重新置顶
7777
7777
10月4日
麻烦置顶
7777
7777
10月3日
那些看剧的app好像没了
hghghg
hghghg
9月24日
强制更新升级,用不了
15579854855
15579854855
9月15日
安装流程都没有,下载也用不了,浪费时间
小高网

小高网管理员

小高网www.xx8g.com

本月创作热力图

少
多