Minor auto cpu improvements.
This commit is contained in:
parent
e8b747dc47
commit
25b3d3f0c1
@ -336,9 +336,9 @@ const GAME_CONFIGS = {
|
|||||||
.add_piece(5, 0, false, new MATH.Vec2(5, 4))
|
.add_piece(5, 0, false, new MATH.Vec2(5, 4))
|
||||||
.add_piece(0, 1, false, new MATH.Vec2(4, 4))
|
.add_piece(0, 1, false, new MATH.Vec2(4, 4))
|
||||||
.add_piece(2, 1, false, new MATH.Vec2(5, 6))
|
.add_piece(2, 1, false, new MATH.Vec2(5, 6))
|
||||||
|
|
||||||
)
|
)
|
||||||
.set_rule("cpu", true),
|
.set_rule("cpu", true),
|
||||||
|
|
||||||
Guide_Check2: new GameConfig()
|
Guide_Check2: new GameConfig()
|
||||||
.set_pieces(CONFIG_PIECES_STANDARD)
|
.set_pieces(CONFIG_PIECES_STANDARD)
|
||||||
.set_pool(new Uint8Array([1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]))
|
.set_pool(new Uint8Array([1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]))
|
||||||
@ -350,8 +350,10 @@ const GAME_CONFIGS = {
|
|||||||
.add_piece(1, 1, false, new MATH.Vec2(4, 4))
|
.add_piece(1, 1, false, new MATH.Vec2(4, 4))
|
||||||
.add_piece(6, 1, true, new MATH.Vec2(7, 3))
|
.add_piece(6, 1, true, new MATH.Vec2(7, 3))
|
||||||
.add_piece(1, 1, true, new MATH.Vec2(2, 0))
|
.add_piece(1, 1, true, new MATH.Vec2(2, 0))
|
||||||
|
.add_piece(5, 1, false, new MATH.Vec2(1, 4))
|
||||||
)
|
)
|
||||||
.set_rule("cpu", true),
|
.set_rule("cpu", true),
|
||||||
|
|
||||||
Guide_Check3: new GameConfig()
|
Guide_Check3: new GameConfig()
|
||||||
.set_pieces(CONFIG_PIECES_STANDARD)
|
.set_pieces(CONFIG_PIECES_STANDARD)
|
||||||
.set_pool(new Uint8Array([1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]))
|
.set_pool(new Uint8Array([1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]))
|
||||||
@ -379,61 +381,98 @@ const GAME_CONFIGS = {
|
|||||||
.set_rule("reverse", true),
|
.set_rule("reverse", true),
|
||||||
|
|
||||||
// Trials
|
// Trials
|
||||||
Guide_Trial1: new GameConfig()
|
Guide_Trial: [
|
||||||
.set_pieces(CONFIG_PIECES_STANDARD)
|
new GameConfig()
|
||||||
.set_pool(new Uint8Array([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]))
|
.set_pieces(CONFIG_PIECES_STANDARD)
|
||||||
.set_layout(
|
.set_pool(new Uint8Array([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]))
|
||||||
new GameConfig.Layout()
|
.set_layout(
|
||||||
.add_piece(7, 1, false, new MATH.Vec2(4, 8))
|
new GameConfig.Layout()
|
||||||
.add_piece(4, 1, true, new MATH.Vec2(4, 7))
|
.add_piece(7, 1, false, new MATH.Vec2(4, 8))
|
||||||
.add_piece(2, 1, false, new MATH.Vec2(5, 8))
|
.add_piece(4, 1, true, new MATH.Vec2(4, 7))
|
||||||
.add_piece(2, 1, false, new MATH.Vec2(3, 5))
|
.add_piece(2, 1, false, new MATH.Vec2(5, 8))
|
||||||
.add_piece(3, 0, true, new MATH.Vec2(2, 6))
|
.add_piece(2, 1, false, new MATH.Vec2(3, 5))
|
||||||
.add_piece(6, 0, true, new MATH.Vec2(1, 5))
|
.add_piece(3, 0, true, new MATH.Vec2(2, 6))
|
||||||
.add_piece(2, 0, true, new MATH.Vec2(7, 7))
|
.add_piece(6, 0, true, new MATH.Vec2(1, 5))
|
||||||
)
|
.add_piece(2, 0, true, new MATH.Vec2(7, 7))
|
||||||
.set_rule("cpu", true),
|
)
|
||||||
|
.set_rule("cpu", true),
|
||||||
|
|
||||||
Guide_Trial2: new GameConfig()
|
new GameConfig()
|
||||||
.set_pieces(CONFIG_PIECES_STANDARD)
|
.set_pieces(CONFIG_PIECES_STANDARD)
|
||||||
.set_pool(new Uint8Array([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]))
|
.set_pool(new Uint8Array([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]))
|
||||||
.set_layout(
|
.set_layout(
|
||||||
new GameConfig.Layout()
|
new GameConfig.Layout()
|
||||||
.add_piece(7, 1, false, new MATH.Vec2(4, 8))
|
.add_piece(7, 1, false, new MATH.Vec2(4, 8))
|
||||||
.add_piece(2, 1, false, new MATH.Vec2(3, 7))
|
.add_piece(2, 1, false, new MATH.Vec2(3, 7))
|
||||||
.add_piece(3, 1, false, new MATH.Vec2(4, 6))
|
.add_piece(3, 1, false, new MATH.Vec2(4, 6))
|
||||||
.add_piece(5, 1, true, new MATH.Vec2(2, 3))
|
.add_piece(5, 1, true, new MATH.Vec2(2, 3))
|
||||||
.add_piece(2, 0, true, new MATH.Vec2(6, 7))
|
.add_piece(2, 0, true, new MATH.Vec2(6, 7))
|
||||||
.add_piece(6, 0, false, new MATH.Vec2(4, 4))
|
.add_piece(6, 0, false, new MATH.Vec2(4, 4))
|
||||||
.add_piece(5, 0, false, new MATH.Vec2(4, 2))
|
.add_piece(5, 0, false, new MATH.Vec2(4, 2))
|
||||||
)
|
)
|
||||||
.set_rule("cpu", true),
|
.set_rule("cpu", true),
|
||||||
|
|
||||||
Guide_Trial3: new GameConfig()
|
new GameConfig()
|
||||||
.set_pieces(CONFIG_PIECES_STANDARD)
|
.set_pieces(CONFIG_PIECES_STANDARD)
|
||||||
.set_pool(new Uint8Array([4, 1, 0, 2, 0, 0, 1, 9, 1, 0, 0, 2, 0, 0]))
|
.set_pool(new Uint8Array([4, 1, 0, 2, 0, 0, 1, 9, 1, 0, 0, 2, 0, 0]))
|
||||||
.set_layout(
|
.set_layout(
|
||||||
new GameConfig.Layout()
|
new GameConfig.Layout()
|
||||||
.add_piece(5, 0, false, new MATH.Vec2(4, 6))
|
.add_piece(5, 0, false, new MATH.Vec2(4, 6))
|
||||||
.add_piece(3, 0, false, new MATH.Vec2(5, 5))
|
.add_piece(3, 0, false, new MATH.Vec2(5, 5))
|
||||||
.add_piece(7, 1, false, new MATH.Vec2(4, 7))
|
.add_piece(7, 1, false, new MATH.Vec2(4, 7))
|
||||||
.add_piece(4, 1, false, new MATH.Vec2(5, 8))
|
.add_piece(4, 1, false, new MATH.Vec2(5, 8))
|
||||||
.add_piece(3, 1, false, new MATH.Vec2(6, 8))
|
.add_piece(3, 1, false, new MATH.Vec2(6, 8))
|
||||||
.add_piece(4, 1, false, new MATH.Vec2(2, 6))
|
.add_piece(4, 1, false, new MATH.Vec2(2, 6))
|
||||||
.add_piece(2, 1, false, new MATH.Vec2(4, 8))
|
.add_piece(2, 1, false, new MATH.Vec2(4, 8))
|
||||||
.add_piece(1, 0, false, new MATH.Vec2(2, 1))
|
.add_piece(1, 0, false, new MATH.Vec2(2, 1))
|
||||||
.add_piece(0, 1, false, new MATH.Vec2(3, 2))
|
.add_piece(0, 1, false, new MATH.Vec2(3, 2))
|
||||||
.add_piece(0, 1, false, new MATH.Vec2(5, 6))
|
.add_piece(0, 1, false, new MATH.Vec2(5, 6))
|
||||||
.add_piece(7, 0, false, new MATH.Vec2(5, 2))
|
.add_piece(7, 0, false, new MATH.Vec2(5, 2))
|
||||||
.add_piece(2, 1, true, new MATH.Vec2(7, 5))
|
.add_piece(2, 1, true, new MATH.Vec2(7, 5))
|
||||||
.add_piece(6, 1, true, new MATH.Vec2(6, 4))
|
.add_piece(6, 1, true, new MATH.Vec2(6, 4))
|
||||||
.add_piece(0, 0, false, new MATH.Vec2(4, 3))
|
.add_piece(0, 0, false, new MATH.Vec2(4, 3))
|
||||||
.add_piece(5, 1, true, new MATH.Vec2(3, 0))
|
.add_piece(5, 1, true, new MATH.Vec2(3, 0))
|
||||||
.add_piece(1, 1, true, new MATH.Vec2(1, 2))
|
.add_piece(1, 1, true, new MATH.Vec2(1, 2))
|
||||||
.add_piece(0, 1, false, new MATH.Vec2(0, 1))
|
.add_piece(0, 1, false, new MATH.Vec2(0, 1))
|
||||||
.add_piece(2, 0, false, new MATH.Vec2(6, 5))
|
.add_piece(2, 0, false, new MATH.Vec2(6, 5))
|
||||||
.add_piece(0, 1, false, new MATH.Vec2(1, 4))
|
.add_piece(0, 1, false, new MATH.Vec2(1, 4))
|
||||||
.add_piece(2, 0, true, new MATH.Vec2(0, 3))
|
.add_piece(2, 0, true, new MATH.Vec2(0, 3))
|
||||||
)
|
)
|
||||||
.set_rule("cpu", true),
|
.set_rule("cpu", true),
|
||||||
|
|
||||||
|
new GameConfig()
|
||||||
|
.set_pieces(CONFIG_PIECES_STANDARD)
|
||||||
|
.set_pool(new Uint8Array([1, 0, 1, 0, 0, 0, 0, 7, 2, 0, 1, 2, 1, 0]))
|
||||||
|
.set_layout(
|
||||||
|
new GameConfig.Layout()
|
||||||
|
.add_piece(7, 0, false, new MATH.Vec2(1, 0))
|
||||||
|
.add_piece(1, 0, false, new MATH.Vec2(1, 1))
|
||||||
|
.add_piece(0, 0, false, new MATH.Vec2(0, 1))
|
||||||
|
.add_piece(0, 0, false, new MATH.Vec2(1, 2))
|
||||||
|
.add_piece(3, 0, false, new MATH.Vec2(2, 1))
|
||||||
|
.add_piece(0, 0, false, new MATH.Vec2(3, 2))
|
||||||
|
.add_piece(0, 0, false, new MATH.Vec2(4, 3))
|
||||||
|
.add_piece(2, 0, false, new MATH.Vec2(5, 2))
|
||||||
|
.add_piece(0, 0, false, new MATH.Vec2(6, 4))
|
||||||
|
.add_piece(2, 0, false, new MATH.Vec2(7, 4))
|
||||||
|
|
||||||
|
.add_piece(1, 1, false, new MATH.Vec2(0, 4))
|
||||||
|
.add_piece(0, 1, false, new MATH.Vec2(0, 3))
|
||||||
|
.add_piece(2, 1, false, new MATH.Vec2(1, 5))
|
||||||
|
.add_piece(0, 1, false, new MATH.Vec2(1, 4))
|
||||||
|
.add_piece(4, 1, false, new MATH.Vec2(2, 6))
|
||||||
|
.add_piece(0, 1, false, new MATH.Vec2(2, 4))
|
||||||
|
.add_piece(3, 1, false, new MATH.Vec2(3, 7))
|
||||||
|
.add_piece(0, 1, false, new MATH.Vec2(3, 4))
|
||||||
|
.add_piece(7, 1, false, new MATH.Vec2(4, 8))
|
||||||
|
.add_piece(3, 1, false, new MATH.Vec2(5, 8))
|
||||||
|
.add_piece(6, 1, false, new MATH.Vec2(5, 7))
|
||||||
|
.add_piece(4, 1, false, new MATH.Vec2(6, 7))
|
||||||
|
|
||||||
|
.add_piece(0, 1, true, new MATH.Vec2(3, 0))
|
||||||
|
.add_piece(5, 1, true, new MATH.Vec2(4, 2))
|
||||||
|
.add_piece(6, 1, true, new MATH.Vec2(5, 1))
|
||||||
|
)
|
||||||
|
.set_rule("cpu", true),
|
||||||
|
],
|
||||||
};
|
};
|
||||||
|
@ -1895,7 +1895,7 @@ const INTERFACE = {
|
|||||||
let opponent = player ^ 1;
|
let opponent = player ^ 1;
|
||||||
let turn = (state.turn & 1);
|
let turn = (state.turn & 1);
|
||||||
|
|
||||||
if(state.state.checkmate) {
|
if(state.state.code != 0) {
|
||||||
if(turn == player) { score = -100000; }
|
if(turn == player) { score = -100000; }
|
||||||
else { score = 100000; }
|
else { score = 100000; }
|
||||||
} else {
|
} else {
|
||||||
@ -1963,6 +1963,8 @@ const INTERFACE = {
|
|||||||
let moves = [ ];
|
let moves = [ ];
|
||||||
let player = state.turn & 1;
|
let player = state.turn & 1;
|
||||||
|
|
||||||
|
let st = state.clone();
|
||||||
|
|
||||||
// Get available placement moves.
|
// Get available placement moves.
|
||||||
for(let p = 0; p < 8; ++p) {
|
for(let p = 0; p < 8; ++p) {
|
||||||
if(state.pools[player].pieces[p] > 0) {
|
if(state.pools[player].pieces[p] > 0) {
|
||||||
@ -1994,37 +1996,27 @@ const INTERFACE = {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Get move scores.
|
|
||||||
let st = state.clone();
|
|
||||||
for(let mv = 0; mv < moves.length; ++mv) {
|
|
||||||
st.from(state);
|
|
||||||
st.process(moves[mv].play);
|
|
||||||
moves[mv].score = state_score(st, player);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Select move.
|
// Select move.
|
||||||
if(moves.length > 0) {
|
if(moves.length > 0) {
|
||||||
moves.sort((a, b) => { return b.score - a.score });
|
|
||||||
|
|
||||||
if(depth == 0) {
|
// Determine move scores.
|
||||||
// Get move scores for search player.
|
for(let mv = 0; mv < moves.length; ++mv) {
|
||||||
for(let i = 0; i < moves.length; ++i) {
|
st.from(state);
|
||||||
let st = state.clone();
|
st.process(moves[mv].play);
|
||||||
st.process(moves[i].play);
|
|
||||||
moves[i].score = state_score(st, search_player);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
for(let i = 0; i < moves.length && i < 8; ++i) {
|
|
||||||
let st = state.clone();
|
|
||||||
st.process(moves[i].play);
|
|
||||||
|
|
||||||
|
moves[mv].score = state_score(st, player);
|
||||||
|
if(depth == 0) {
|
||||||
|
moves[mv].score = state_score(st, search_player);
|
||||||
|
} else {
|
||||||
let result = determine_play(st, search_player, depth - 1);
|
let result = determine_play(st, search_player, depth - 1);
|
||||||
if(result !== null) {
|
if(result !== null) {
|
||||||
moves[i].score = result.score;
|
moves[mv].score = result.score;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
moves.sort((a, b) => { return b.score - a.score });
|
||||||
|
|
||||||
// Select random from ties.
|
// Select random from ties.
|
||||||
let selection = 0;
|
let selection = 0;
|
||||||
for(let i = 1; i < moves.length; ++i) {
|
for(let i = 1; i < moves.length; ++i) {
|
||||||
@ -2042,10 +2034,7 @@ const INTERFACE = {
|
|||||||
|
|
||||||
let result = determine_play(GAME_DATA, GAME_DATA.turn & 1, 1);
|
let result = determine_play(GAME_DATA, GAME_DATA.turn & 1, 1);
|
||||||
if(result !== null) {
|
if(result !== null) {
|
||||||
console.log("PL" + result.play.from + " " + result.play.to);
|
|
||||||
INTERFACE.process(result.play);
|
INTERFACE.process(result.play);
|
||||||
} else {
|
|
||||||
console.log("MOVES NULL");
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -680,12 +680,22 @@ const SCENES = {
|
|||||||
], []);
|
], []);
|
||||||
} break;
|
} break;
|
||||||
case "checkmate": {
|
case "checkmate": {
|
||||||
UI.mainnav([
|
function cb() {
|
||||||
|
INTERFACE.load(GAME_CONFIGS.Guide_Trial[this.id]);
|
||||||
|
}
|
||||||
|
|
||||||
|
let buttons = [
|
||||||
UI.button("Ex", () => { INTERFACE.load(GAME_CONFIGS.Guide_Checkmate); }),
|
UI.button("Ex", () => { INTERFACE.load(GAME_CONFIGS.Guide_Checkmate); }),
|
||||||
UI.button("1", () => { INTERFACE.load(GAME_CONFIGS.Guide_Trial1); }),
|
];
|
||||||
UI.button("2", () => { INTERFACE.load(GAME_CONFIGS.Guide_Trial2); }),
|
for(let i = 0; i < GAME_CONFIGS.Guide_Trial.length; ++i) {
|
||||||
UI.button("3", () => { INTERFACE.load(GAME_CONFIGS.Guide_Trial3); }),
|
let bound = cb.bind({
|
||||||
], []);
|
id: i,
|
||||||
|
});
|
||||||
|
let button = UI.button((i + 1).toString(), bound);
|
||||||
|
buttons.push(button);
|
||||||
|
}
|
||||||
|
|
||||||
|
UI.mainnav(buttons, []);
|
||||||
} break;
|
} break;
|
||||||
default: {
|
default: {
|
||||||
UI.mainnav([], []);
|
UI.mainnav([], []);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user