private final ArrayList<Set<Integer>> WINNING_COMBS = new ArrayList<Set<Integer>>();
в этом хранятся в виде множеств все выигрышные комбинации. Ну а вот весь код отвечающий за поиск выигрышных комбинаций: ArrayList<Integer> player1Marks = new ArrayList<Integer>();
ArrayList<Integer> player2Marks = new ArrayList<Integer>();
for (int i = 0; i < board.length; i++) {
switch (board[i]) {
case PLAYER_1: player1Marks.add(i); break;
case PLAYER_2: player2Marks.add(i); break;
}
}
for (Set winComb : WINNING_COMBS) {
if (player1Marks.containsAll(winComb)) {
return GameState.PLAYER_1_WIN;
} else if (player2Marks.containsAll(winComb)) {
return GameState.PLAYER_2_WIN;
}
}