Mon Jul 3 08:07:00 UTC 2023 inscode

上级 73056fb8
...@@ -17,8 +17,8 @@ export const directions = [ ...@@ -17,8 +17,8 @@ export const directions = [
/** /**
* 检查四个方向连续的棋子数 * 检查四个方向连续的棋子数
* @param {object} param * @param {object} param
* @param {number} param.row 行 * @param {number} param.row 行 y
* @param {number} param.col 列 * @param {number} param.col 列 x
* @param {(is_empty|is_white|is_black)[]} param.board 棋盘 * @param {(is_empty|is_white|is_black)[]} param.board 棋盘
* @param {is_white|is_black|is_empty} [param.player] 当前棋子类型 * @param {is_white|is_black|is_empty} [param.player] 当前棋子类型
* @param {number} param.win_size 需要几个棋子才赢 * @param {number} param.win_size 需要几个棋子才赢
...@@ -27,10 +27,8 @@ export const directions = [ ...@@ -27,10 +27,8 @@ export const directions = [
export function checkWin({ row, col, board, player, win_size }) { export function checkWin({ row, col, board, player, win_size }) {
const ROW = board.length; const ROW = board.length;
const COL = board[0].length const COL = board[0].length
const TYPE = player ?? board[row][col]
let res = [] let res = []
for (let i = 0; i < directions.length; i++) { for (let i = 0; i < directions.length; i++) {
res = [[row, col]]; res = [[row, col]];
const [dy, dx] = directions[i]; const [dy, dx] = directions[i];
...@@ -38,7 +36,7 @@ export function checkWin({ row, col, board, player, win_size }) { ...@@ -38,7 +36,7 @@ export function checkWin({ row, col, board, player, win_size }) {
let y = row + dy; let y = row + dy;
// 向正反两个方向扩展,检查是否有连续的五个相同棋子 // 向正反两个方向扩展,检查是否有连续的五个相同棋子
while (x >= 0 && x < COL && y >= 0 && y < ROW && board[x][y] === TYPE) { while (x >= 0 && x < COL && y >= 0 && y < ROW && board[x][y] === player) {
res.push([y, x]) res.push([y, x])
x += dx; x += dx;
y += dy; y += dy;
...@@ -46,7 +44,7 @@ export function checkWin({ row, col, board, player, win_size }) { ...@@ -46,7 +44,7 @@ export function checkWin({ row, col, board, player, win_size }) {
x = col - dx; x = col - dx;
y = row - dy; y = row - dy;
while (x >= 0 && x < COL && y >= 0 && y < ROW && board[x][y] === TYPE) { while (x >= 0 && x < COL && y >= 0 && y < ROW && board[x][y] === player) {
res.push([y, x]) res.push([y, x])
x -= dx; x -= dx;
y -= dy; y -= dy;
...@@ -83,7 +81,7 @@ export function robotPlay(board, robot, win_size) { ...@@ -83,7 +81,7 @@ export function robotPlay(board, robot, win_size) {
let score = 0; let score = 0;
const [row, col] = point; const [row, col] = point;
// 判断子后是否获胜 // 判断在此空位上落子后是否获胜
const win = checkWin({ row, col, board, player: robot, win_size }); const win = checkWin({ row, col, board, player: robot, win_size });
if (win) { if (win) {
return [row, col] return [row, col]
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册