Я не могу написать вам решение сейчас, но я думаю, что вы спрашиваете об этом цикле:
Cell shape = null;
boolean win = true;
for(int j=0, k = 0; j < WIDTH) {
if(shape == null) {
shape = this.board[j][k];
} else {
win = win && this.board[j][k] == shape;
}
}
, который проходит через главную диагональ, поэтому вам не нужно писать вещи вручную.Тогда вам нужно сделать то же самое для второй диагонали
Но, если честно, если бы я был вами, у меня было бы 3 или менее строк / столбцов, я бы сделал так, как вы предлагали для целей читабельности