const self = this;
this.compWorker.onmessage = function(e) {
let compMove = e.data;
+ if (!compMove)
+ return; //may happen if MarseilleRules and subTurn==2 (TODO: a bit ugly...)
if (!Array.isArray(compMove))
compMove = [compMove]; //to deal with MarseilleRules
// TODO: imperfect attempt to avoid ghost move:
if (compMove.length == 2)
setTimeout( () => {
if (self.mode == "computer")
- self.play(compMove[1]);
- }, 2000);
+ self.play(compMove[1], "animate");
+ }, 750);
}, delay);
}
},
// No alpha-beta here, just adapted min-max at depth 2(+1)
getComputerMove()
{
+ if (this.subTurn == 2)
+ return null; //TODO: imperfect interface setup
+
const maxeval = V.INFINITY;
const color = this.turn;
const oppCol = this.getOppCol(this.turn);
{
candidates.push(i);
}
+
const selected = doubleMoves[_.sample(candidates, 1)].moves;
if (selected.length == 1)
return selected[0];