Крестики-нолики, метод проверки выигрыша
Занимаюсь изучением Java на одном сайте и в рамках изучения пишем проект крестики-нолики. На данный момент, очень долго бьюсь с задачкой, в ходе которой надо написать метод проверки выигрыша. Разбил данный метод на подметоды, чтобы было проще ориентироваться. Рассмотрел все возможные варианты выигрыша, но почему-то в случае с вариантом когда победителя нет, моя программа спотыкается. В частности проблема заключается в том, что не совсем ясно, что по итогу данного метода я должен вернуть. Прошу подсказать, что конкретно по итогу данного метода(WinnerController) мне нужно будет вернуть, чтобы получить значение "X" когда победителя нет(таково условие задачи). Заранее извиняюсь, если код написано не красиво и излишне вычурно.
public class WinnerController {
public String getWinner (Field field) {
checkHorisontal(field);
checkVertical(field);
checkFirstDiagonal(field);
checkSecondDiagonal(field);
}
public String checkVertical (Field field){
Point point1 = new Point();
Point point2 = new Point();
Point point3 = new Point();
for (int i = 0; i < field.getSize(); i++){
//Point point1 = new Point();
//Point point2 = new Point();
//Point point3 = new Point();
point1.x = i;
point1.y = 0;
point2.x = i;
point2.y = 1;
point3.x = i;
point3.y = 2;
checkThreePoint(point1, point2, point3, field);
}
return field.getFigure(point1);
}
public String checkHorisontal(Field field){
Point point1 = new Point();
Point point2 = new Point();
Point point3 = new Point();
for(int i = 0; i < field.getSize(); i++){
//Point point1 = new Point();
//Point point2 = new Point();
//Point point3 = new Point();
point1.x = 0;
point2.x = 1;
point3.x = 2;
point1.y = i;
point2.y = i;
point3.y = i;
checkThreePoint(point1, point2, point3, field);
}
return field.getFigure(point1);
}
public String checkFirstDiagonal(Field field){
Point point1 = new Point();
Point point2 = new Point();
Point point3 = new Point();
for (int i = 0; i <= field.getSize()-3; i++){
//Point point1 = new Point();
//Point point2 = new Point();
//Point point3 = new Point();
point1.x = i;
point1.y = i;
point2.x = i+1;
point2.y = i+1;
point3.x = i+2;
point3.y = i+2;
checkThreePoint(point1, point2, point3, field);
}
return field.getFigure(point1);
}
public String checkSecondDiagonal(Field field){
Point point1 = new Point();
Point point2 = new Point();
Point point3 = new Point();
for(int i = 0; i <= field.getSize()-3; i++){
//Point point1 = new Point();
//Point point2 = new Point();
//Point point3 = new Point();
point1.x = i+2;
point1.y = i;
point2.x = i+1;
point2.y = i+1;
point3.x = i;
point3.y = i+2;
checkThreePoint(point1, point2, point3, field);
}
return field.getFigure(point1);
}
public String checkThreePoint (Point point1, Point point2, Point point3, Field field){
if (field.getFigure(point1) != null
&& field.getFigure(point2) != null
&& field.getFigure(point3) != null
&& field.getFigure(point1).equals(field.getFigure(point2))
&& field.getFigure(point2).equals(field.getFigure(point3)))
{
return field.getFigure(point1);
}
else {
return null;
}
}