Шахматы
Общая идея проекта
Разработка консольного приложения на языке Ruby для симуляции классической игры шахмат с возможностью игры между двумя игроками на одном устройстве.
Основные функциональные требования:
Отображение доски и расположения всех фигур в консоли.
Валидация ввода игрока на предмет соответствия правилам игры.
Отслеживание ходов игроков и их очередности.
Распознавание и оповещение о шахе и мате.
Автоматическое сохранение и загрузка текущей партии.
Пример интерфейса
a b c d e f g h
1 r n b q k b n r
2 p p p p p p p p
3 . . . . . . . .
4 . . . . . . . .
5 . . . . . . . .
6 . . . . . . . .
7 P P P P P P P P
8 R N B Q K B N R
Пример ввода и вывода ходов
Player 1 (white) to move. Enter your move (e.g., e2e4):
> e2e4
a b c d e f g h
1 r n b q k b n r
2 p p p p . p p p
3 . . . . . . . .
4 . . . . p . . .
5 . . . . . . . .
6 . . . . . . . .
7 P P P P . P P P
8 R N B Q K B N R
Player 2 (black) to move. Enter your move (e.g., e7e5):
> e7e5
И так далее...
Структура приложения
Главный класс, инкапсулирующий логику игры и отслеживающий ходы, очередность игроков, шах, мат.
Класс доски, содержащий и управляющий расположением фигур.
Классы для каждого типа фигур (Pawn, Rook, Knight, Bishop, Queen, King), содержащие информацию о возможных ходах, правилах движения конкретных фигур и текущем положении.
Класс игрока, содержащий информацию о цвете фигур игрока и текущем статусе игры (шах, для рокировки и т.д.)
Ожидаемые результаты и ограничения
Приложение должно успешно симулировать игру шахмат между двумя игроками с соблюдением всех классических правил.
Документация и комментарии к коду должны быть предоставлены для облегчения понимания и дальнейшей поддержки или расширения функционала.
Ведение гита должно придерживаться любой набиолее популярной стратегии: GitFlow, OneFlow и тд.
Покрытие тестами всей бизнес логики. Если ваш код проходит тесты на работоспособность, то в дальнейшем при разбработке фич будет крайне сложно сломать вашу игру.
Last updated