Auto Commit

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