boolean place(int x, int y, Player p)
{
boolean isValid = false;
if((board[x][y] != empty) || !inRange(x, y))
return false;
for(int i = -1; i < 2; i++)
for(int j = -1; j < 2; j++)
if(inRange((x+i), y+j) && (board[x+i][y+j] != p)) //will recurse on empty spaces and fail immediately
isValid = isValid || check((x+i), (y+j), i, j, p);
if(isValid)
board[x][y] = p;
return isValid;
}
boolean check(int x, int y, int dx, int dy, Player p)
{
if((board[x][y] == empty) || !inRange(x, y))
return false;
if(board[x][y] == p)
return true;
if(check((x + dx), (y + dy),
dx, dy, p))
{
board[x][y] = p;
return true;
}
else
return false;
}
boolean inRange(int x, int y)
{
return ((x >= 0) && (x < board.length) && (y >= 0) && (y < board[0].length));
}