Adjust automatic move scores.

This commit is contained in:
yukirij 2024-08-20 01:39:43 -07:00
parent c55bf3d6f3
commit 6dda0a60da

View File

@ -917,7 +917,7 @@ const INTERFACE = {
for(let i = 0; i < state.board.tiles.length; ++i) { for(let i = 0; i < state.board.tiles.length; ++i) {
let tile = state.board.tiles[i]; let tile = state.board.tiles[i];
score += (tile.threaten[player] - tile.threaten[opponent]) / 2; score += Math.floor((tile.threaten[player] - tile.threaten[opponent]) / 2);
} }
for(let i = 0; i < state.board.pieces.length; ++i) { for(let i = 0; i < state.board.pieces.length; ++i) {
@ -925,12 +925,16 @@ const INTERFACE = {
if(piece_id !== null) { if(piece_id !== null) {
let piece = state.board.pieces[i]; let piece = state.board.pieces[i];
let tile = state.board.tiles[piece.tile]; let tile = state.board.tiles[piece.tile];
let hex = HEX.tile_to_hex(tile);
let piece_score = 1 + piece.piece + piece.promoted; let piece_score = 3 + (5 * (piece.piece + piece.promoted));
if(piece.player == player) { if(piece.player == player) {
score += piece_score; if(tile.threaten[opponent] == 0) { score += piece_score; }
score -= piece_score * tile.threaten[opponent]; else { score -= piece_score; }
if(hex.y == state.board.columns[hex.x].extent[player]) {
score += piece_score * tile.threaten[player];
}
} else { } else {
score -= piece_score; score -= piece_score;
score -= piece_score * tile.threaten[opponent]; score -= piece_score * tile.threaten[opponent];
@ -948,17 +952,17 @@ const INTERFACE = {
for(let i = 0; i < state.board.columns.length; ++i) { for(let i = 0; i < state.board.columns.length; ++i) {
let column = state.board.columns[i]; let column = state.board.columns[i];
if(player == 0) { if(player == 0) {
score += column.extent[player] / 4; score += column.extent[player];
score -= (8 - column.extent[opponent]) / 4; score -= 8 - column.extent[opponent];
} else { } else {
score += (8 - column.extent[player]) / 4; score += 8 - column.extent[player];
score -= column.extent[opponent] / 4; score -= column.extent[opponent];
} }
} }
if(state.state.check) { if(state.state.check) {
if(turn == player) { score -= 2; } if(turn == player) { score -= 20; }
else { score += 2; } else { score += 1; }
} }
if(state.state.checkmate) { if(state.state.checkmate) {
if(turn == player) { score -= 1000; } if(turn == player) { score -= 1000; }
@ -1022,7 +1026,7 @@ const INTERFACE = {
moves[i].score = state_score(st, search_player); moves[i].score = state_score(st, search_player);
} }
} else { } else {
for(let i = 0; i < moves.length && i < 3; ++i) { for(let i = 0; i < moves.length && i < Math.ceil(Math.log2(moves.length)); ++i) {
let st = state.clone(); let st = state.clone();
st.process(moves[i].play); st.process(moves[i].play);
@ -1042,7 +1046,7 @@ const INTERFACE = {
break; break;
} }
} }
selection = Math.min(moves.length, selection + 3); selection = Math.min(moves.length, selection + 1);
return moves[Math.floor(Math.random() * selection)]; return moves[Math.floor(Math.random() * selection)];
} }