网页版方格贪吃蛇游戏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>
上一篇 首次打开网站里的链接自动弹出百度搜索页面增加展现量代码
下一篇 蓝色给自己的网站加一个好看的跳转页面代码

探索站点内容

搜索文章、标签、分类

MediaClaw 社媒虾
MediaClaw 社媒虾
关注公众号
领美团外卖神券
领美团外卖神券
最新评论
15579854855
15579854855
9月15日
安装流程都没有,下载也用不了,浪费时间
小高网
小高网
9月15日
这个还是少用好
06285142
06285142
9月14日
怎么现在都没出绿色版的绿泡泡了。等了一年了呢
小高网
小高网
9月9日
那就找个完整版的安装覆盖上去吧
白添霸霸
白添霸霸
9月9日
精简版安装后在控制面板不显示
小高网
小高网
9月8日
控制面板卸载不了吗
白添霸霸
白添霸霸
9月8日
大佬,安装以后有些软件打不开了,例如CCleaner 7,提示WebView2 Runtime 初始化失败(错误:0x80070002),重装完整版提示安装时出
1
1
8月31日
就是不能处理已安装软件
小高网

小高网管理员

小高网www.xx8g.com

本月创作热力图