Adjust automatic move scores.

This commit is contained in:
yukirij 2024-08-20 11:12:52 -07:00
parent 3fc98038ba
commit f2468621b2

View File

@ -242,6 +242,23 @@ const INTERFACE = {
}
},
release() {
if(INTERFACE_DATA.hover !== null && !INTERFACE.Ui.match_select(INTERFACE_DATA.hover, INTERFACE_DATA.select)) {
let is_valid = false;
if(INTERFACE_DATA.select !== null && INTERFACE_DATA.hover.source == 0 && INTERFACE_DATA.player == (GAME_DATA.turn & 1)) {
let tile_state = INTERFACE_DATA.board_state[INTERFACE_DATA.hover.tile][1];
is_valid = (tile_state == INTERFACE.TileStatus.Valid || tile_state == INTERFACE.TileStatus.Threat);
}
// Handle player action.
if(is_valid) {
let play = new GAME.Play(INTERFACE_DATA.select.source, INTERFACE_DATA.select.tile, INTERFACE_DATA.hover.tile);
INTERFACE.process(play);
INTERFACE_DATA.select = null;
}
}
},
resize() {
let width = INTERFACE_DATA.canvas.width = INTERFACE_DATA.canvas.clientWidth;
let height = INTERFACE_DATA.canvas.height = INTERFACE_DATA.canvas.clientHeight;
@ -751,6 +768,7 @@ const INTERFACE = {
canvas.addEventListener("mousemove", INTERFACE.hover);
canvas.addEventListener("mouseout", INTERFACE.unhover);
canvas.addEventListener("mousedown", INTERFACE.click);
canvas.addEventListener("mouseup", INTERFACE.release);
window.addEventListener("resize", INTERFACE.draw);
switch(INTERFACE_DATA.mode) {
@ -786,6 +804,7 @@ const INTERFACE = {
GAME.init();
INTERFACE_DATA.player = 0;
INTERFACE_DATA.rotate = 0;
INTERFACE_DATA.auto_mode = null;
INTERFACE.draw();
},
@ -924,16 +943,17 @@ const INTERFACE = {
auto() {
if(INTERFACE_DATA.auto_mode === null) {
console.log("auto on");
INTERFACE_DATA.auto_mode = ((GAME_DATA.turn & 1) ^ 1);
INTERFACE_DATA.auto_mode = GAME_DATA.rotate ^ 1;
setTimeout(INTERFACE.auto_play, 500);
} else {
console.log("auto off");
INTERFACE_DATA.auto_mode = null;
}
INTERFACE.draw();
},
auto_play() {
if(INTERFACE_DATA.auto_mode !== (GAME_DATA.turn & 1)) { return; }
function state_score(state, player) {
let score = 0;
let opponent = player ^ 1;
@ -951,7 +971,7 @@ const INTERFACE = {
let tile = state.board.tiles[piece.tile];
let hex = HEX.tile_to_hex(tile);
let piece_score = 3 + (5 * (piece.piece + piece.promoted));
let piece_score = 3 + (4 * (piece.piece + piece.promoted));
if(piece.player == player) {
if(tile.threaten[opponent] == 0) { score += piece_score; }
@ -960,8 +980,7 @@ const INTERFACE = {
score += piece_score * tile.threaten[player];
}
} else {
score -= piece_score;
score -= piece_score * tile.threaten[opponent];
score -= piece_score - 2;
}
}
}