- Notifications
You must be signed in to change notification settings - Fork1
License
bitcoineazy/chess_pygame
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
Задачи для пятого задания Практикума по программированию. Общая тема задания«Шахматный симулятор: объектно-ориентированная версия».
На базе собственной реализации Задания 4 создать объектно-ориентированную реализациюпрограммы для игры в шахматы.Базовые требования к функциональности программы сохраняются прежними:Реализовать программу, которая позволяет играть в шахматы на компьютере. Взаимодействие спрограммой производится через консоль (базовый вариант). Игровое поле изображается в виде 8текстовых строк, плюс строки с буквенным обозначением столбцов (см. пример на Рис. 1) иперерисовывается при каждом изменении состояния поля. При запросе данных от пользователяпрограмма сообщает, что ожидает от пользователя (например, позицию фигуры для следующегохода белыми; целевую позицию выбранной фигуры) и проверяет корректность ввода(допускаются только ходы соответствующие правилам шахмат; поддержка рокировки, сложныхправил для пешек и проверки мата вынесена в отдельные пункты). Программа должна считатьколичество сделанных ходов.Сама программа НЕ ходит: т.е. не пытается выполнить ходы за одну из сторон, а предоставляетпоочередно вводить ходы за белых и черных.Требования к реализации:Основные объекты и абстрактные сущности игры должны быть представлены в виде объектов,представителей соответствующих классов, часть классов должны быть организованы в видеиерархии. В частности: шахматные фигуры – объекты, представители классов, организованных ввиде иерархии; доска – объект; ходы фигур – объекты. Вся основная информация должнахраниться в атрибутах объектов или классов (например, информация о положении фигур, цветефигур, символах, используемых для визуализации фигур и т.п.). Основная часть функционаладолжна программы должна быть организована в виде методов, закрепленных засоответствующими объектами или классами. Например, это касается методов определяющих
допустимые ходы фигур. Организация иерархий классов, атрибутов и методов должна позволятьгибко расширять возможности программы с минимальными изменениям в уже созданном коде.
Дополнительные задания:
- Придумать 3 новых вида фигур с оригинальными правилами перемещения и реализовать ихклассы. Создать модификацию шахмат с новыми фигурами с минимальнымвмешательством в существующий код.Сложность 1
- На базе игры в шахматы реализовать игру в шашки. Разработать модификацию шахмат сминимальным вмешательством в существующий код.Сложность 2
3.(# Реализовано. вариант - Глинский) На базе игры в шахматы на классической доске реализовать игру в гексагональныешахматы (https://ru.wikipedia.org/wiki/Гексагональные_шахматы ). Выбрать один из трехвариантов: шахматы Глинского; шахматы МакКуэя; шахматы Шафрана. Разработатьмодификацию шахмат с минимальным вмешательством в существующий код для обычныхшахмат.Сложность 3
- На базе игры в шахматы на классической доске реализовать игру в гексагональныешахматы на троих (https://ru.wikipedia.org/wiki/Шахматы_для_троих ). Выбрать один изсуществующих вариантов. Разработать модификацию шахмат с минимальнымвмешательством в существующий код для обычных шахмат.Сложность 4
5.(# Реализовано) Реализовать возможность «отката» ходов. С помощью специальной команды можновозвращаться на ход (или заданное количество ходов) назад вплоть до начала партии.Информация о ходах в партии должна храниться в объектно-ориентированном виде.Сложность 1
6.(# Реализовано, hexogonal_chess.py) Реализовать функцию подсказки выбора новой позиции фигуры: после выбора фигуры дляхода функция визуально на поле показывает поля доступные для хода или фигурысоперника, доступные для взятия, выбранной фигурой. Информация о допустимых ходахдолжна храниться в объектно-ориентированном виде, алгоритм без модификации долженработать при добавлении новых типов фигур (задание берется совместно с Заданием 1).Сложность 1
- Реализовать функцию подсказки угрожаемых фигур: она возвращает информацию о том,какие фигуры ходящего игрока сейчас находятся под боем (т.е. могут быть взятысоперником на следующий ход) и визуально выделяет их на поле. Функция отдельноуказывает на наличие шаха королю. Информация о допустимых ходах должна храниться вобъектно-ориентированном виде, алгоритм без модификации должен работать придобавлении новых типов фигур (задание берется совместно с Заданием 1).Сложность 1
- Реализовать поддержку для пешки сложных правил: «взятие на проходе» и замены надругух фигуру при достижении крайней горизонтали (в базовой версии их поддержка необязательна, но возможность первого хода на одну или две горизонтали - обязательно).Подробнее о правилах см.:https://ru.wikipedia.org/wiki/Правила_шахмат . Информация одопустимых ходах должна храниться в объектно-ориентированном виде, алгоритм безмодификации должен работать при добавлении новых типов фигур со сложнымповедением (задание берется совместно с Заданием 1 и как минимум одна из новых фигур
должна иметь сложное поведение, т.е. изменение правил хода и взятия фигуры взависимости от дополнительных условий).Сложность 1