Здравствуйте!
Все исходные коды доступны на github: gitgub.com/pichuser/balda (ну, или на момент написания статьи они был не доступны, т.к. на Руси решили заблокировать сей ресурс. Если так продолжится, то могу переложить куда-нибудь).
Однажды во время игры в «Балду» на телефоне меня посетила мысль самому попытаться создать что-то подобное. Сфера моей деятельности в программировании лежит в области ASP.MVC сайтов. Соответственно, выбор реализации — сайт. Более конкретно — AngularJS на фронтэнде, SingalR для «онлайн»-связи между игроками. А на бэкэнде мне давно хотелось испытать TDD (test drive development).
Краткое описание процесса создания
Для написания тестов использовался NUnit и их же утилита, которая запускает тесты после построения приложения (описаны в книге из секции «Использованные материалы»). Согласно TDD, написал первый тест: «Хочу, чтобы игрок мог успешно зарегистрировать слово, если оно есть в словаре». Далее добавил классы и заглушку. Следом написал противоположный тест и уже добавил некоторую реализацию. Дальше начал подключать интерфейсы и mock-объекты. По ходу дела, как мог, занимался рефакторингом кода. Один из весьма интересных моментов начался, когда я зашёл в очевидный тупик: игра создавалась «стихийно» (без каких-либо предварительных обдумываний) — и поначалу шла в русле «однопользовательской» игры, то есть одновременно люди могут играть только на одном поле. А дальше мне, естественно, захотелось многопользовательского режима (т.е. параллельно несколько игровых полей). И вот тут я смело окунулся в переработку кода…
Читать полностью »