Mon Jul 3 08:07:00 UTC 2023 inscode

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