Альтернативные крестики-нолики

Название TicTacToe
Баллы от 6 до 9
Командная?

Disclamer!

Чтобы не было недопониманий, графическая часть задачи делается на WPF+Caliburn.Micro (можно взять любой MVVM-фреймворк на ваше усмотрение). При невыполнении этого условия - максимум за задачу составит 6 баллов. Я итак верю, что вы можете наиндокодить эту задачу в codebehind, а не через MVVM. Задача - научиться делать правильно. Кто не осилил дисклеймер - я не виноват.

Описание

Field

Так выглядит поле

Вам нужно написать программу, которая позволяет двум игрокам, за одним монитором, играть в «альтернативные» крестики-нолики. Поле для альтернативных крестиков-ноликов выглядит следующим образом:

Правила игры

  • Игровое поле разделено на 9 полей, каждое из которых представляет собой мини-поле для классических крестиков-ноликов. Таким образом имеем одно «большое поле» и 9 «маленьких полей»
  • Участники поочередно ставят крестики и нолики. Начинающий игру участник может походить в любое из 81 полей.
  • Следующий участник имеет право ходить только в то маленькое поле (относительно большого), которое соответствует клетке, относительно маленького поля, в которую походил предыдущий участник.

Пример:

Field

Мы альтернативщики - вырезаем скриншоты из MS Word

Выигрывая маленькое поле, участник ставит в нем свой символ:

Field

Тынц

  • Чтобы выиграть в игре – участник должен выиграть три маленьких поля, стоящих по горизонтали, по диагонали или по вертикали
  • Если в маленьком поле образовалась ничья, то это поле считается ничейным
  • Если участник вынужден ходить в уже заполненное маленькое поле, то он вправе выбрать любое другое из свободных полей
  • После выигрыша маленького поля – оно не выходит из игры, пока в нем есть свободные клетки

Подсказки

  • Используйте string.Format для вывода поля на экран, или StringBuilder для конструирования строки с полем перед выводом + Console.Write
  • За консольную версию программы вы получите 6 баллов, а за усложненную - 9.

Усложнение

Для всего вышеописанного сделайте GUI-реализацию на ваш дизайнерский вкус и амбиции.