Я написал игру tic-tac-toe в Java, и мой текущий метод определения конца игры учитывает следующие возможные сценарии для игры:
- Доска заполнена, и победитель еще не объявлен: игра - ничья.
- Крест выиграл.
- Круг выиграл.
К сожалению, для этого он читает через предопределенный набор этих сценариев из таблицы. Это не обязательно плохо, учитывая, что на доске всего 9 пробелов, и, следовательно, таблица несколько невелика, но есть ли лучший алгоритмический способ определения, закончилась ли игра? Определение того, выиграл ли кто-то или нет, является проблемой проблемы, так как проверка заполнения 9 пробелов тривиальна.
Метод таблицы может быть решением, но если нет, то что? Кроме того, что, если плата не была размером n=9
? Что, если это была гораздо большая доска, скажем n=16
, n=25
и т.д., Заставляя число последовательно помещенных предметов выигрывать как x=4
, x=5
и т.д.? Общий алгоритм для использования для всех n = { 9, 16, 25, 36 ... }
?