Заключительный проект: Шахматы
Не забывайте использовать Git для фиксации изменений в ваших проектах!
Вы прошли длинный путь. Настало время проверить, чему вы научились.
Шахматы на первый взгляд кажутся сложной игрой, но тем не менее игру можно разбить на блоки, из которых построится большой проект. Если вы не играли, почитайте правила игры здесь.
Мы намеренно не будем давать информацию о том, как действовать при создании этого последнего проекта -- вам придется решать задачу с минимальной предварительной информацией о методиках решения и ее структуре. Это хорошая практика для будущего программирования в реальных задачах. Сейчас у вас есть все необходимое, например опыт при решении проекта "Ход Конем".
Эта задача содержит широкий спектр того, что вы делали в предыдущих уроках. Ключом к решению здесь является продумывание шагов наперед и хорошая организация рабочего процесса. Вы сильно облегчите себе задачу, если сможете остаться собранным и разбить ее на части, которые будет легко затем собрать воедино.
Для вашего портфолио, данный проект будет означать то, что вы способны сделать проект из очень многих , сильно различающихся друг от друга компонентов.
Задания
- Создайте игру для командной строки, где два игрока могут играть друг против друга
- Программа должна уметь определять положения шаха и мата, а также не позволять игрокам делать неверные ходы.
- Добавьте возможность сохранять игру в любое время (помните о сериализации?).
- Напишите тесты для критичных участков программы. Не нужно использовать TDD (если вы только сами этого хотите), но все, что постоянно вводится в командную строку, должно быть покрыто тестами.
- Сделайте все, что можете, чтобы сохранить классы модульными и чистыми, а каждый метод должен быть предназначен для решения только одной задачи. Это самая большая программа, которую вам предстоит написать - и в ней вы поймете преимущества хорошей структурированности кода (и тестирования), когда столкнетесь с решением возникающих ошибок.
- Сделайте фигуры из символов, используя символы Юникода.
- Дополнительная задача - создайте простого компьютерного игрока (пусть даже он будет делать случайные ходы).
- Дополнительная задача 2 - Рассмотрите использование сокетов для игры с кем-нибудь по сети (помните ваш сетевой проект?)
Решения студентов
- Решение 1
- Решение 2
- Решение 3
- Решение 4
- Решение 5
Дополнительные ресурсы
Этот раздел содержит полезные ссылки на дополнительные материалы. Они не обязательны, так что расценивайте их как нечто полезное, если вы хотите поглубже погрузиться в тему
- Правила игры в шахматы
- Здесь подсказки от RubyQuiz, где была одна из ваших задач. Вам они не нужны. Победите в себе желание подсмотреть!