ИМХО для поля произвольной расмерности надо проверять не поле, а ход. Так как число выигрыщных комбинаций с ростом поля будет расти очень плохо. Думаю надо проверять каждый ход, не привел ли он к победе.
То есть после каждого хода проверяем последовательно
1. длина диагонали крестиков вверхвправо + внизвлево+1
2. длина диагонали крестиков вверхвлево+внизвправо+1
3. длина диагонали крестиков вправо+влево+1
4. длина диагонали крестиков вниз+вверх + 1
Если хотя бы одно направление больше целевого значения (на неограниченном поле вроде 5 в ряд играют), то игрок победил.