Auto Commit

上级 a6a839ea
......@@ -32,87 +32,38 @@ function playChess(item, r_i, c_i) {
}
// AI 生成代码
function checkWin(board) {
function checkFiveInARow(board, startX, startY, deltaX, deltaY) {
const rows = board.length;
const cols = board[0].length;
// 检查行
for (let row = 0; row < rows; row++) {
for (let col = 0; col < cols - 4; col++) {
if (
board[row][col] &&
board[row][col] === board[row][col + 1] &&
board[row][col] === board[row][col + 2] &&
board[row][col] === board[row][col + 3] &&
board[row][col] === board[row][col + 4]
) {
const positions = [];
for (let i = 0; i < 5; i++) {
positions.push([row, col + i]);
}
return positions;
}
}
}
// 检查列
for (let col = 0; col < cols; col++) {
for (let row = 0; row < rows - 4; row++) {
if (
board[row][col] &&
board[row][col] === board[row + 1][col] &&
board[row][col] === board[row + 2][col] &&
board[row][col] === board[row + 3][col] &&
board[row][col] === board[row + 4][col]
) {
const positions = [];
for (let i = 0; i < 5; i++) {
positions.push([row + i, col]);
}
return positions;
}
}
const player = board[startX][startY];
if (!player) {
return null;
}
// 检查对角线(左上到右下)
for (let row = 0; row < rows - 4; row++) {
for (let col = 0; col < cols - 4; col++) {
if (
board[row][col] &&
board[row][col] === board[row + 1][col + 1] &&
board[row][col] === board[row + 2][col + 2] &&
board[row][col] === board[row + 3][col + 3] &&
board[row][col] === board[row + 4][col + 4]
) {
const positions = [];
for (let i = 0; i < 5; i++) {
positions.push([row + i, col + i]);
}
return positions;
}
for (let i = 1; i <= 4; i++) {
const row = startX + i * deltaX;
const col = startY + i * deltaY;
if (row < 0 || row >= rows || col < 0 || col >= cols || board[row][col] !== player) {
return null;
}
}
return [[startX, startY], [startX + deltaX, startY + deltaY], [startX + 2 * deltaX, startY + 2 * deltaY], [startX + 3 * deltaX, startY + 3 * deltaY], [startX + 4 * deltaX, startY + 4 * deltaY]];
}
// 检查对角线(右上到左下)
for (let row = 0; row < rows - 4; row++) {
for (let col = cols - 1; col >= 4; col--) {
if (
board[row][col] &&
board[row][col] === board[row + 1][col - 1] &&
board[row][col] === board[row + 2][col - 2] &&
board[row][col] === board[row + 3][col - 3] &&
board[row][col] === board[row + 4][col - 4]
) {
const positions = [];
for (let i = 0; i < 5; i++) {
positions.push([row + i, col - i]);
}
function checkWin(board) {
const rows = board.length;
const cols = board[0].length;
for (let row = 0; row < rows; row++) {
for (let col = 0; col < cols; col++) {
const positions =
checkFiveInARow(board, row, col, 0, 1) ||
checkFiveInARow(board, row, col, 1, 0) ||
checkFiveInARow(board, row, col, 1, 1) ||
checkFiveInARow(board, row, col, 1, -1);
if (positions) {
return positions;
}
}
}
// 如果没有连续五个棋子,则返回 null
return null;
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册