JSFiddle - React, Tailwind, and code Playground
by blesh
JavaScript
(function (window) {
function AI(board) {
var mark = 'O',
oppMark = 'X',
planned = null;
this.allMovesCount = function () {
var bd = board.board(),
x, y, c = 0;
for (y = 0; y < bd.length; y++) {
for (x = 0; x < bd[y].length; x++) {
if (bd[y][x]) c++;
}
}
return c;
};
function loc(x, y) {
return {
x: x,
y: y
};
}
function findKills(m) {
}
this.nextMove = function () {
var moveCount = this.allMovesCount(board);
switch (moveCount) {
case 0:
//first move: take center.
return loc(1, 1);
case 1:
//second move
//try to take center
if (!board.get(1, 1)) {
return loc(1, 1);
}
//go for a corner
return loc(0, 0);
case 2:
//third move
var aiCenter = board.get(1, 1) === mark;
if (aiCenter) {
//we own the center
var oppx, oppy;
var oppCorner = board.get(oppx = 0, oppy = 0) === oppMark || board.get(oppx, oppy = 2) === oppMark || board.get(oppx = 2, oppy = 0) === oppMark || board.get(oppx, oppy = 2) === oppMark;
if (oppCorner) {
//opponent has a corner.
//take opposite corner (defensive)
return loc(oppx ? 0 : 2, oppy ? 0 : 2);
} else {
//take a corner next to their move
var oppMid = board.get(oppx = 0, oppy = 1) === oppMark...