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

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

Мы альтернативщики - вырезаем скриншоты из MS Word
Выигрывая маленькое поле, участник ставит в нем свой символ:

Тынц
- Чтобы выиграть в игре – участник должен выиграть три маленьких поля, стоящих по горизонтали, по диагонали или по вертикали
- Если в маленьком поле образовалась ничья, то это поле считается ничейным
- Если участник вынужден ходить в уже заполненное маленькое поле, то он вправе выбрать любое другое из свободных полей
- После выигрыша маленького поля – оно не выходит из игры, пока в нем есть свободные клетки
Подсказки
- Используйте
string.Format для вывода поля на экран, или StringBuilder для конструирования строки с полем перед выводом + Console.Write
- За консольную версию программы вы получите 6 баллов, а за усложненную - 9.
Усложнение
Для всего вышеописанного сделайте GUI-реализацию на ваш дизайнерский вкус и амбиции.