Skip to content

H0p1ty/Chess_n_b

 
 

Repository files navigation

Шахматы

Работали над проектом:

  • Бучилкин Никита
  • Курченко Матвей
  • Михаил Рябчиков

Формулировка задачи

Необходимо визуализировать игру в шахматы с помощью библиотеки FLTK и дать возможность играть в режиме один против одного.

Анализ задачи

  • настроить взаимодействие доски и фигур
  • необходимо проверять корректность ходов фигур и подсвечивать доступные ходы
  • добавить рокировку и взятие на проходе
  • проверять на шах
  • обнаруживать окончание игры (мат)

Идеи

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

Проектирование

  • Класс Chessboard, в котором храняться объекты типа Cell, обозначающие клетки.
  • Класс Figure и производные от него классы Pawn, King, Bishop, Knight, Queen, Rook, в которых нужно переопредилить функции correct_step и show_possible_steps ответственные за проверку и отображение корректных ходов соответственно.
  • Класс DangerSign при шахе королю, должен подсвечивать короля.
  • Класс RedCross должен показывать недоступные при шахе ходы.
  • Классы Frame и VisualSteps ответственны за отображение на экране возможного поедания фигур и доступных ходов.

Какие классы в каком порядке создавались и редактировались

Сначала были созданы классы Chessboard и Cell. Далее Figure, Pawn, King, Bishop, Knight, Queen, Rook, которые в последствии были подвержены изменениям в связи с добавлением нового функционала. Затем были добавлены Frame и VisualSteps. И в конце RedCross и DangerSign.

С какими сложностями сталкивались в процессе проектирования и реализации

  • Реализация отображения возможных ходов
  • Реализация рокировки
  • Реализация провреки шаха и окончании игры.
  • Реализация класса AttachManager, отвечающего за привязку и отвязку графических объектов от окна

About

Test

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • C++ 99.0%
  • CMake 1.0%