用js编写围棋游戏代码
时间: 2023-12-04 16:03:54 浏览: 96
对于AI而言,围棋的复杂度极高,难以用简单的算法实现。因此,下面的代码只是简单地实现了一个基本的围棋游戏。
HTML代码:
```
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>围棋游戏</title>
<style>
table {
border-collapse: collapse;
}
table td {
width: 30px;
height: 30px;
border: 1px solid #ccc;
background-color: #fff;
text-align: center;
vertical-align: middle;
font-size: 20px;
font-weight: bold;
color: #333;
cursor: pointer;
}
.black {
background-color: #000;
color: #fff;
}
.white {
background-color: #fff;
color: #000;
}
</style>
</head>
<body>
<table id="board"></table>
<script src="game.js"></script>
</body>
</html>
```
JavaScript代码:
```
var board = document.getElementById('board');
var rows = 19, cols = 19;
var currentColor = 'black';
var boardData = [];
// 初始化棋盘
function initBoard() {
for (var i = 0; i < rows; i++) {
var row = board.insertRow(i);
boardData[i] = [];
for (var j = 0; j < cols; j++) {
var cell = row.insertCell(j);
cell.onclick = function() {
var x = this.parentNode.rowIndex;
var y = this.cellIndex;
if (boardData[x][y]) {
return;
}
drawChess(x, y);
checkWin(x, y);
switchColor();
}
boardData[i][j] = '';
}
}
}
// 画棋子
function drawChess(x, y) {
var cell = board.rows[x].cells[y];
cell.className = currentColor;
cell.innerHTML = currentColor == 'black' ? '●' : '○';
boardData[x][y] = currentColor == 'black' ? 'B' : 'W';
}
// 切换颜色
function switchColor() {
currentColor = currentColor == 'black' ? 'white' : 'black';
}
// 检查是否胜利
function checkWin(x, y) {
if (isWin(x, y)) {
alert(currentColor + ' win!');
resetBoard();
}
}
// 重置棋盘
function resetBoard() {
for (var i = 0; i < rows; i++) {
for (var j = 0; j < cols; j++) {
var cell = board.rows[i].cells[j];
cell.className = '';
cell.innerHTML = '';
boardData[i][j] = '';
}
}
currentColor = 'black';
}
// 判断是否胜利
function isWin(x, y) {
// 判断行
var count = 1;
for (var i = y - 1; i >= 0; i--) {
if (boardData[x][i] == currentColor) {
count++;
} else {
break;
}
}
for (var i = y + 1; i < cols; i++) {
if (boardData[x][i] == currentColor) {
count++;
} else {
break;
}
}
if (count >= 5) {
return true;
}
// 判断列
var count = 1;
for (var i = x - 1; i >= 0; i--) {
if (boardData[i][y] == currentColor) {
count++;
} else {
break;
}
}
for (var i = x + 1; i < rows; i++) {
if (boardData[i][y] == currentColor) {
count++;
} else {
break;
}
}
if (count >= 5) {
return true;
}
// 判断右上
var count = 1;
for (var i = x - 1, j = y + 1; i >= 0 && j < cols; i--, j++) {
if (boardData[i][j] == currentColor) {
count++;
} else {
break;
}
}
for (var i = x + 1, j = y - 1; i < rows && j >= 0; i++, j--) {
if (boardData[i][j] == currentColor) {
count++;
} else {
break;
}
}
if (count >= 5) {
return true;
}
// 判断左上
var count = 1;
for (var i = x - 1, j = y - 1; i >= 0 && j >= 0; i--, j--) {
if (boardData[i][j] == currentColor) {
count++;
} else {
break;
}
}
for (var i = x + 1, j = y + 1; i < rows && j < cols; i++, j++) {
if (boardData[i][j] == currentColor) {
count++;
} else {
break;
}
}
if (count >= 5) {
return true;
}
return false;
}
initBoard();
```
这样,一个简单的围棋游戏就完成了。当然,这个游戏还有很多不完善的地方,比如没有考虑禁手规则、没有实现悔棋功能等等。但是,这个游戏的实现已经足够了,可以让我们更好地理解围棋的规则和玩法。
阅读全文