Построить сложные однострочники в большинстве случаев плохая идея.Однако - в некоторых случаях, например, здесь, вы облегчаете зрение, что является общим для нескольких рядов, а что отличается:
private int maxSequence (char player , Cell c)
{
int row = c.getRow();
int col = c.getCol();
int maxVert = 0;
int maxHor = 0;
int maxDiag = 0;
if (player == O)
{
for (int j = 0; j < _board[0].length; j++)
{
if ((_board [col] [row+j] == O) || (_board [col] [row-j] == O)) maxVert++;
if ((_board [col+j][row] == O) || (_board [col-j][row] == O)) maxHor++;
if ((_board [col+j][row+j] == 0) || (_board [col-j][row-j] == O)) maxDiag++;
}
}
if (player == X)
{
for (int j = 0; j < _board[0].length; j++)
{
if ((_board [col] [row+j] == O) || (_board [col] [row-j] == X)) maxVert++;
if ((_board [col+j][row] == O) || (_board [col-j][row] == X)) maxHor++;
if ((_board [col+j][row+j] == 0) || (_board [col-j][row-j] == X)) maxDiag++;
}
}
if ((maxDiag >= maxVert) && (maxDiag >= maxHor)) return maxDiag;
if ((maxVert >= maxDiag) && (maxVert >= maxHor)) return maxVert;
return maxHor;
}
После обращения к строкам я заметил, что в первомблок, вы тестируете на OO, OO, OO, а во втором блоке на OX, OX, OX, и я сомневаюсь, вы хотели бы проверить на XX, XX, XX.
Без компиляции, во втором представлении я вижу, что есть OO0, где я бы ожидал OOO (не так ли было XXX, как упомянуто выше).:) - Ах, но этот шаблон используется и в чистом O-блоке.
Я хотел бы добавить, что мне нравится идея Stehpen C выразить max (a, b, c), что первые два блока должны быть заменены параметризованным блоком, и что более полная картина всей программыможет привести к совершенно другому дизайну, более объектно-ориентированному.
Объединяя предложения, мы промежуточно останавливаемся здесь:
private int maxSequence (char player, Cell c)
{
int row = c.getRow();
int col = c.getCol();
int maxVert = 0;
int maxHor = 0;
int maxDiag = 0;
for (int j = 0; j < _board[0].length; j++)
{
if ((board [col] [row+j] == player) || (board [col] [row-j] == player)) maxVert++;
if ((board [col+j][row] == player) || (board [col-j][row] == player)) maxHor++;
if ((board [col+j][row+j] == player) || (board [col-j][row-j] == player)) maxDiag++;
}
return Math.max (maxHor, Math.max (maxVert, maxDiag));
}
Промежуточно, потому что мы могли бы сделать совершенно другой дизайн - я чувствую запах класса Board и класса Player по крайней мере,