diff --git a/src/App.vue b/src/App.vue index 748897991e64c95ae91aa9536853f5588a821263..527b4d16d61d7f129522b4988338e7bbcc43bfd8 100644 --- a/src/App.vue +++ b/src/App.vue @@ -4,7 +4,7 @@ import { is_empty, checkWin, is_black, is_white, robotPlay } from "./utils" import RandomTree from "./components/RandomTree.vue"; // import { robotPlay } from './utils/api' // 配置 -const size = ref(30) +const size = ref(20) const win_size = ref(5) // 棋盘 const lattices = ref([]) diff --git a/src/utils/index.js b/src/utils/index.js index 3c064516ad2a7bf85713ecd518e7ac5fb9558955..5048f77ea19c2c688cf9def7c1e150d8ab819f0d 100644 --- a/src/utils/index.js +++ b/src/utils/index.js @@ -168,19 +168,22 @@ export function robotPlay(board, win_size) { */ /** - * 获取这一边方向的信息,连珠颗数,延伸出去的空位数 + * 获取这一边方向的信息,连珠颗数,延伸出去的空位数。 + * 只需要 [空格,空格,棋子,棋子,空格,空格] 这样的数据 * @param {(is_empty|is_white|is_black)[][]} board 棋盘 * @param {number} row 行 * @param {number} col 列 - * @return {{num: number, empty_num: number}} 说明:num: 棋子个数;empty_num: 空格数量 + * @return {{num: number, first_empty_num: number, last_empty_num: number}} 说明:num: 棋子个数;empty_num: 空格数量 */ -function getJoinInfo(board, row, col, [y, x], player) { +function getDirectionsInfo(board, row, col, [y, x], player) { const ROW = board.length const COL = board[0].length // 连续棋子数 let num = 0 - // 一侧到边缘的空位 - let empty_num = 0 + // 棋子前面的空格数 + let first_empty_num = 0 + // 棋子后面的空格数 + let last_empty_num = 0 // 不包括当前位置 let _row = row + y let _col = col + x @@ -193,20 +196,22 @@ function getJoinInfo(board, row, col, [y, x], player) { break; } // 连珠计数 - if (!empty_num && item === player) { + if (!first_empty_num && item === player) { num += 1 } - // 计算空位数 + // 计算棋子前面的空格数 if (item === is_empty) { - empty_num += 1 + first_empty_num += 1 } + // 计算棋子后面的空格数 _row += y _col += x } return { num, - empty_num + first_empty_num, + last_empty_num } } /** @@ -219,8 +224,8 @@ function getJoinInfo(board, row, col, [y, x], player) { * @returns */ function getDirectionScore(board, row, col, [y, x], win_size, player) { - const { num: r_num, empty_num: r_empty_num } = getJoinInfo(board, row, col, [y, x], player) - const { num: l_num, empty_num: l_empty_num } = getJoinInfo(board, row, col, [y * -1, x * -1], player) + const { num: r_num, first_empty_num: r_empty_num } = getDirectionsInfo(board, row, col, [y, x], player) + const { num: l_num, first_empty_num: l_empty_num } = getDirectionsInfo(board, row, col, [y * -1, x * -1], player) const SIZE = r_num + l_num // 没有棋子