js五子棋2


js五子棋2

上一篇文章(js五子棋1)我直接使用dom存储五子棋落子位置,这次使用二维数组存储落子位置

1.初始化一个二维数组,0=没有子,1=黑子,2=白子

var qipan = new Array();
for(var i = 0; i < 15; i++) {
	qipan[i] = new Array();
	for(var j = 0; j < 15; j++) {
		qipan[i][j] = 0;
	}
}

2.点击td的事件改为,修改二维数组中对应的值

$(document).ready(function() {
	$("td").click(function() {
		var qs = parseInt($(".v1").html());

		var row = $(this).parent().index();
		var column = $(this).index();
		if(qipan[row][column] == 0) {
			if(qs % 2 == 0) {
				$(this).css("background-image", "url(../img/black.png)");
				qipan[row][column] = 1;
				$("#set").val("白方下");
			} else {
				$(this).css("background-image", "url(../img/white.png)");
				qipan[row][column] = 2;
				$("#set").val("黑方下");
			}
			qs += 1;
			$(".v1").html(qs);
			$(".v2").html(Math.ceil(qs / 2));
			if(isWin(row, column)) {
				if(qs % 2 == 0) {
					alert("白方胜");
				} else {
					alert("黑方胜");
				}
				reSet();
			}
		}
	})
})
3.新的重置方法中增加对二维数组的重置
function reSet() {
	var board = document.getElementById("board");

	for(var i = 0; i < 15; i++) {
		for(var j = 0; j < 15; j++) {
			qipan[i][j] = 0;
			board.rows[i].cells[j].style.background = "";
		}
	}
	$(".v1").html("0");
	$(".v2").html("0");
	$("#set").val("黑方下");
}

4.同理,判断胜利的方法也要做出相应的修改(略)

完整代码如下:

<!DOCTYPE html>
<html>

	<head>
		<meta charset="utf-8" />
		<meta name="viewport" content="user-scalable=no">
		<title></title>

		<style type="text/css">
			#board {
				width: 600px;
				height: 600px;
				float: left;
				position: absolute;
				top: 0px;
				left: 0px;
			}
			
			#board td {
				padding: 0px; //默认1px
				border: 0px;
				width: 40px;
				height: 40px;
			}
			
			#msg {
				float: left;
				width: 160px;
				height: 600px;
				background-color: #dcdcdc;
				position: absolute;
				top: 0px;
				left: 600px;
			}
			
			#set {
				padding: 0px;
				float: left;
				width: 158px;
				height: 80px;
				font-family: "微软雅黑";
				font-size: 40px;
				color: blue;
			}
			
			#cd {
				text-align: center;
				font-family: "宋体";
				font-size: 28px;
				float: left;
				border: solid 1px black;
				width: 88px;
				height: 48px;
			}
			
			#val {
				text-align: center;
				font-size: 40px;
				float: left;
				border: solid 1px black;
				width: 68px;
				height: 48px;
			}
			
			#cz {
				font-size: 40px;
				width: 160px;
				height: 70px;
			}
		</style>
		<script src="../js/jquery-3.1.1.min.js">
		</script>
	</head>

	<body>
		<table id="board" cellspacing="0px">
			<tr>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
			</tr>
			<tr>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
			</tr>
			<tr>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
			</tr>
			<tr>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
			</tr>
			<tr>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
			</tr>
			<tr>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
			</tr>
			<tr>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
			</tr>
			<tr>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
			</tr>
			<tr>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
			</tr>
			<tr>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
			</tr>
			<tr>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
			</tr>
			<tr>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
			</tr>
			<tr>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
			</tr>
			<tr>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
			</tr>
			<tr>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
				<td></td>
			</tr>
		</table>
		<div id="msg">
			<input id="set" type="text" value="黑方下" readonly="readonly" />
			<div id="cd">棋数:</div>
			<div id="val" class="v1">0</div>
			<div id="cd">回合:</div>
			<div id="val" class="v2">0</div>
			<button id="cz">重置</button>
		</div>

	</body>
	<script type="text/javascript">
		var board = document.getElementById("board");

		for(var i = 0; i < board.rows.length; i++) {
			for(var j = 0; j < board.rows[i].cells.length; j++) {
				var cell = board.rows[i].cells[j].bgColor;
				if(i % 2 == 0) {
					if(j % 2 == 0) {
						board.rows[i].cells[j].bgColor = "#33ff33";
					} else {
						board.rows[i].cells[j].bgColor = "#00cc00";
					}
				} else {
					if(j % 2 == 0) {
						board.rows[i].cells[j].bgColor = "#00cc00";
					} else {
						board.rows[i].cells[j].bgColor = "#33ff33";
					}
				}
			}
		}
	</script>
	<script type="text/javascript">
		var qipan = new Array();
		for(var i = 0; i < 15; i++) {
			qipan[i] = new Array();
			for(var j = 0; j < 15; j++) {
				qipan[i][j] = 0;
			}
		}
	</script>
	<script>
		$(document).ready(function() {
			$("td").click(function() {
				var qs = parseInt($(".v1").html());
				
				var row = $(this).parent().index();
				var column = $(this).index();
				if(qipan[row][column] == 0) {
					if(qs % 2 == 0) {
						$(this).css("background-image", "url(../img/black.png)");
						qipan[row][column] = 1;
						$("#set").val("白方下");
					} else {
						$(this).css("background-image", "url(../img/white.png)");
						qipan[row][column] = 2;
						$("#set").val("黑方下");
					}
					qs += 1;
					$(".v1").html(qs);
					$(".v2").html(Math.ceil(qs / 2));
					if(isWin(row, column)) {
						if(qs % 2 == 0) {
							alert("白方胜");
						} else {
							alert("黑方胜");
						}
						reSet();
					}
				}
			})
		})

		$(document).ready(function() {
			$("#cz").click(function() {
				reSet();
			})
		})

		function reSet() {
			var board = document.getElementById("board");

			for(var i = 0; i < 15; i++) {
				for(var j = 0; j < 15; j++) {
					qipan[i][j] = 0;
					board.rows[i].cells[j].style.background = "";
				}
			}
			$(".v1").html("0");
			$(".v2").html("0");
			$("#set").val("黑方下");
		}

		function isWin(row, column) {
			if(isRowWin(row, column) || isColWin(row, column) || isX1Win(row, column) || isX2Win(row, column)) {
				return true;
			} else {
				return false;
			}
		}

		function isRowWin(row, column) {
			var sum = 1;
			var cell = qipan[row][column];
			for(var c = column-1; c >=0; c--) {
				if(cell == qipan[row][c]) {
					sum += 1;
				} else {
					break;
				}
			}
			if(sum == 5) {
				return true;
			}

			for(var c = column+1; c<15; c++) {
				if(cell == qipan[row][c]) {
					sum += 1;
				} else {
					break;
				}
			}
			if(sum > 4) {
				return true;

			} else {
				return false;
			}
		}

		function isColWin(row, column) {
			var sum = 1;
			var cell = qipan[row][column];
			for(var r = row-1; r >=0; r--) {
				if(cell == qipan[r][column]) {
					sum += 1;
				} else {
					break;
				}
			}
			if(sum == 5) {
				return true;
			}

			for(var r = row+1; r<15; r++) {
				if(cell == qipan[r][column]) {
					sum += 1;
				} else {
					break;
				}
			}
			if(sum > 4) {
				return true;
			} else {
				return false;
			}
		}

		function isX1Win(row, column) {
			var sum = 1;
			var cell = qipan[row][column];
			for(var r=row-1,c=column-1;r>=0&&c>=0;r--,c--) {
				if(cell == qipan[r][c]) {
					sum += 1;
				} else {
					break;
				}
			}

			if(sum == 5) {
				return true;
			}

			for(var r=row+1,c=column+1;r<15&&c<15;r++,c++) {
				if(cell == qipan[r][c]) {
					sum += 1;
				} else {
					break;
				}
			}

			if(sum > 4) {
				return true;
			} else {
				return false;
			}
		}

		function isX2Win(row, column) {
			var sum = 1;
			var cell = qipan[row][column];
			for(var r=row-1,c=column+1;r>=0&&c<15;r--,c++) {
				if(cell == qipan[r][c]) {
					sum += 1;
				} else {
					break;
				}
			}

			if(sum == 5) {
				return true;
			}

			for(var r=row+1,c=column-1;r<15&&c>=0;r++,c--) {
				if(cell == qipan[r][c]) {
					sum += 1;
				} else {
					break;
				}
			}
			if(sum > 4) {
				return true;
			} else {
				return false;
			}
		}

	</script>

</html>

猜你喜欢

转载自blog.csdn.net/weixin_37891479/article/details/79516681