tic-tac-toe-minimax
Version:
54 lines (48 loc) • 1.52 kB
JavaScript
export default class AIHelpers {
static playerWon(board, player ) {
if (
(board[0] === player && board[1] === player && board[2] === player) ||
(board[3] === player && board[4] === player && board[5] === player) ||
(board[6] === player && board[7] === player && board[8] === player) ||
(board[0] === player && board[3] === player && board[6] === player) ||
(board[1] === player && board[4] === player && board[7] === player) ||
(board[2] === player && board[5] === player && board[8] === player) ||
(board[0] === player && board[4] === player && board[8] === player) ||
(board[2] === player && board[4] === player && board[6] === player)
) {
return true;
}
else {
return false;
}
}
static isGameFinished(board, symbols) {
if ( !this.isMovesLeft(board, symbols) ) {
return true;
}
const { huPlayer, aiPlayer } = symbols;
if( this.playerWon(board, huPlayer ) || this.playerWon(board, aiPlayer )) {
return true;
}
return false;
}
/**
* Gets an Array of empty indexes
* @param {Array} board
* @param {Object} symbols
* @return {Array}
*/
static getEmptyIndexies(board, symbols) {
const { huPlayer, aiPlayer } = symbols;
return board.filter(s => s !== huPlayer && s !== aiPlayer);
}
/**
* Checks if the are empty squares. Returns true|false.
* @param {Array} board
* @param {Object} symbols
* @return {bool}
*/
static isMovesLeft(board, symbols) {
return this.getEmptyIndexies(board, symbols).length !== 0;
}
}