Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 

Repository files navigation

Шахматный симулятор: Oбъектно ориентированная версия C++

Базовое задание

На базе собственной реализации предыдущего задания создать объектно ориентированную реализацию программы для игры в шахматы. Базовые требования к функциональности программы сохраняются прежними.

Требования к реализации Основные объекты и абстрактные сущности игры должны быть представлены в виде объектов, представителей соответствующих классов, часть классов должны быть организованы в виде иерархии. В частности: шахматные фигуры — объекты, представители классов, организованных в виде иерархии; доска — объект; ходы фигур — объекты. Вся основная информация должна храниться в атрибутах объектов или классов (например, информация о положении фигур, цвете фигур, символах, используемых для визуализации фигур и т.п.). Основная часть функционала должна программы должна быть организована в виде методов, закрепленных за соответствующими объектами или классами. Например, это касается методов определяющих допустимые ходы фигур. Организация иерархий классов, атрибутов и методов должна позволять гибко расширять возможности программы с минимальными изменениями в уже созданном коде.

Дополнительные задания:

  1. На базе игры в шахматы реализовать игру в шашки. Разработать модификацию шахмат с минимальным вмешательством в существующий код. Сложность 3

  2. Реализовать возможность «отката» ходов. С помощью специальной команды можно возвращаться на ход (или заданное количество ходов) назад вплоть до начала партии. Информация о ходах в партии должна храниться в объектно-ориентированном виде. Сложность 2

  3. Реализовать функцию подсказки выбора новой позиции фигуры: после выбора фигуры для хода функция визуально на поле показывает поля доступные для хода или фигуры соперника, доступные для взятия, выбранной фигурой. Информация о допустимых ходах должна храниться в объектно-ориентированном виде, алгоритм без модификации должен работать при добавлении новых типов фигур. Сложность 3

  4. Реализовать функцию подсказки угрожаемых фигур: она возвращает информацию о том, какие фигуры ходящего игрока сейчас находятся под боем (т.е. могут быть взяты соперником на следующий ход) и визуально выделяет их на поле. Функция отдельно указывает на наличие шаха королю. Информация о допустимых ходах должна храниться в объектно-ориентированном виде, алгоритм без модификации должен работать при добавлении новых типов фигур Сложность 3

  5. Реализовать поддержку для пешки сложных правил: «взятие на проходе» и замены на другую фигуру при достижении крайней горизонтали (в базовой версии их поддержка не обязательна, но возможность первого хода на одну или две горизонтали - обязательно). Подробнее о правилах см.: https://.wikipedia.org/wiki/Правила шахмат. Информация о допустимых ходах должна храниться в объектно-ориентированном виде, алгоритм без модификации должен работать при добавлении новых типов фигур со сложным поведением (задание берется совместно с Заданием 1 и как минимум одна из новых фигур должна иметь сложное поведение, т.е. изменение правил хода и взятия фигуры в зависимости от дополнительных условий). Сложность 3

• В итоге имеем: шахматы и шашки, которые запускаются в терминале. Шахматы: пешка может ходить на две клетки вперед со стартовой позиции, умеет взятие на проходе. Есть подсказки фигур под боем(!), предупреждение о шахе/мате победе/поражении. Пешка превращается в ферзя при достижении противоположного края.

Шашки: реализовано цепное взятие, также есть подсказки и дамки

About

chess checkers oop c++

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages