Шахматы

Общая идея проекта

Разработка консольного приложения на языке Ruby для симуляции классической игры шахмат с возможностью игры между двумя игроками на одном устройстве.

Основные функциональные требования:

  1. Отображение доски и расположения всех фигур в консоли.

  2. Валидация ввода игрока на предмет соответствия правилам игры.

  3. Отслеживание ходов игроков и их очередности.

  4. Распознавание и оповещение о шахе и мате.

  5. Автоматическое сохранение и загрузка текущей партии.

Пример интерфейса

   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), содержащие информацию о возможных ходах, правилах движения конкретных фигур и текущем положении.

  • Класс игрока, содержащий информацию о цвете фигур игрока и текущем статусе игры (шах, для рокировки и т.д.)

Ожидаемые результаты и ограничения

  1. Приложение должно успешно симулировать игру шахмат между двумя игроками с соблюдением всех классических правил.

  2. Документация и комментарии к коду должны быть предоставлены для облегчения понимания и дальнейшей поддержки или расширения функционала.

  3. Ведение гита должно придерживаться любой набиолее популярной стратегии: GitFlow, OneFlow и тд.

  4. Покрытие тестами всей бизнес логики. Если ваш код проходит тесты на работоспособность, то в дальнейшем при разбработке фич будет крайне сложно сломать вашу игру.

Last updated