Mon Jul 3 10:24:00 UTC 2023 inscode

上级 cc0dbe7d
...@@ -93,6 +93,7 @@ export function robotPlay(board, robot, win_size) { ...@@ -93,6 +93,7 @@ export function robotPlay(board, robot, win_size) {
} else { } else {
// 这里要应该是要返回这个位置的分数 // 这里要应该是要返回这个位置的分数
score = estimateScore({ row, col, board, win_size }) score = estimateScore({ row, col, board, win_size })
console.log(score)
} }
} }
...@@ -106,21 +107,6 @@ export function robotPlay(board, robot, win_size) { ...@@ -106,21 +107,6 @@ export function robotPlay(board, robot, win_size) {
return maxScorePos; return maxScorePos;
} }
const direction_4 = [
// \
[[-1, -1],
[1, 1]],
// |
[[0, -1],
[0, 1]],
// /
[[1, -1],
[-1, 1]],
// -
[[-1, 0],
[1, 0]]
]
/** /**
* 计分 * 计分
* 零颗棋子记 个位数 的积分 * 零颗棋子记 个位数 的积分
...@@ -159,19 +145,19 @@ function getBoundary(size, num) { ...@@ -159,19 +145,19 @@ function getBoundary(size, num) {
* @param {*} piece_type * @param {*} piece_type
* @returns * @returns
*/ */
function getDirectionScore(board, row, col, [x, y], piece_type) { function getDirectionScore(board, row, col, [y, x], win_size, piece_type) {
const ROW = board.length const ROW = board.length
const COL = board[0].length const COL = board[0].length
let res = 0 let res = 0
let _row = row + x let _row = row + y
let _col = col + y let _col = col + x
while (true) { while (true) {
if (_row < 0 || _col < 0 || !board[_row] || board[_row][_col] !== piece_type) { if (_row < 0 || _col < 0 || !board[_row] || board[_row][_col] !== piece_type) {
break; break;
} }
res += 1 res += 1
_row += x _row += y
_col += y _col += x
} }
// 判断边距 // 判断边距
return res return res
...@@ -187,8 +173,9 @@ function getDirectionScore(board, row, col, [x, y], piece_type) { ...@@ -187,8 +173,9 @@ function getDirectionScore(board, row, col, [x, y], piece_type) {
* @return {number} * @return {number}
*/ */
function estimateScore({ board, row, col, win_size }) { function estimateScore({ board, row, col, win_size }) {
return direction_4.reduce((r, [p1, p2]) => { console.log(JSON.stringify(board))
const square = getDirectionScore(board, row, col, p1, win_size, is_black) + getDirectionScore(board, row, col, p2, win_size, is_black) return directions.reduce((r, [y, x]) => {
return r + 10 ** square const square = getDirectionScore(board, row, col, [y, x], win_size, is_black) + getDirectionScore(board, row, col, [y * -1, x * -1], win_size, is_black)
return r + (10 ** square)
}, 0) }, 0)
} }
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册