var allColumnsFilled = this.columns.every(function(i){
return i.length === 6;
});
return allColumnsFilled ? 'all-columns-filled' : 'column-filled';
}
}
ConnectFour.prototype.checkContinuity = function (arr, value, continuity) {
var result = arr.reduce(function (prev, current) {
if ( prev === continuity ) {
return prev;
}
if ( current === value ) {
return ++prev;
} else {
return 0;
}
}, 0);
return result === continuity;
}
ConnectFour.prototype.checkConnectivity = function (column, row, player) {
if (this.checkContinuity(this.getColumn(column, row), player, 4))
return true;
if (this.checkContinuity(this.getRow(column, row), player, 4))
return true;
if (this.checkContinuity(this.getForwardDia(column, row), player, 4))
return true;
if (this.checkContinuity(this.getBackwardDia(column, row), player, 4))
return true;
return false;
}
ConnectFour.prototype.getColumn = function (column, row) {
return this.columns[column];
}
ConnectFour.prototype.getRow = function (column, row) {
var returnArr = [];
for ( var i = 0 ; i < this.columns.length ; i++ ) {
returnArr.push( this.columns[i][row] ? this.columns[i][row] : null);
}
return returnArr;
}
ConnectFour.prototype.getForwardDia = function (column, row) {
var returnArr = [];
var c,r;
for ( c = column - row, r = 0 ; c < this.columns.length ; c++, r++ ) {
if ( this.columns[c]) {
returnArr.push( this.columns[c][r] ? this.columns[c][r] : null);
}
}
return returnArr;
}
ConnectFour.prototype.getBackwardDia = function (column, row) {
var returnArr = [];
var c,r;
for ( c = column + row, r = 0 ; c >= 0 ; c--, r++ ) {
if ( this.columns[c]) {
returnArr.push( this.columns[c][r] ? this.columns[c][r] : null);
}
}
return returnArr;
}