Состав команды:
Задача
Жесткие ботари очень любят расслабиться по-ботарьски. Самое лучшее времяпровождение - это размять свои мозги в игре шахматы с другими ботарями!
Функционал
Сто процентов будет графический интерфейс (меню и все остальное). Пользователь будет взаимодействовать с ним с помощью компьютерной мышки (то есть устройство ввода - мышь, устройство вывода - монитор). Будет возможность играть по сети и еще несколько фич по вдохновению авторов (некоторые уже описаны в интерфейсе для пользователя). Сама игра будет представлять из себя классические шахматы по всем канонам.
Стек технологий
- C++.
- Simple and Fast Multimedia Library C++ Edition.
- Возможно другие!!!!!!!
Крутые способности:
- В игру можно будет играть по сети (sfml network).
- Во время игры пользователи смогут писать текстовые сообщения друг другу и отправлять реакции.
- Будут так же звуки ходов, важных событий, возможна фоновая музыка.
Интерфейс для пользователя:
- Игроки должны выбрать себе nickname.
- Игрокам будет предложен цвет, за который они будет играть (возможно будет что-то кроме черного и белого), и в зависимости от выбраных цветов, определяется порядок в котором ходят игроки.
- Время каждого игрока на обдумывание будет засекаться как в классических шахматах.
- Чтобы игрок походил определенной фигурой, он должен нажать на нее, после этого будут подсвечены поля, куда она может сходить, на одно из подсвеченных полей должен будет нажать игрок. Если игрок нажмет на неподсвеченную клетку, то игра подскажет, что ход некорректный. Если игрок еще не сходил данной фигурой и передумал ей ходить, то он должен нажать повторно на выбранную фигуру.
- Игра будет проходить по правилам классических шахмат, в случае достижения пешкой границы, будет предложен обмен пешки на другую фигуру, будут показаны доступные фигуры (картинки), на которую нужно будет нажать.
- В случае победы/поражения игрока, на экране будет появляться соответствующее сообщение (картинка).
- Будут присутствовать примитивные звуки при взаимодействии пользователя с интерфейсом.
- Также будут доступны некоторые дополнительные режимы (Шашки Mode, Random расположение фигур Mode, Игра с самим собой - и другие по мере вдохновения авторов).
-
Иванов Павел: проработка общей архитектуры проекта (представление фигур, игровое поле), алгоритмизация некоторых режимов игры (Random расположение фигур), работа с механикой слона и ладьи, ответственный за библиотеки и идейный вдохновитель использования SFML в проекте, помощь сокомандникам по проекту по SFML из-за уже имеющегося до проекта опыта использования данной библиотеки, подготовка набора картинок по завершении игры (пункт 6) интерфейса).
-
Афанасьев Олег: работа с так называемыми корнер-кейсами и правилами игры в шахматы как в действиях фигур, так и в невозможных ситуациях на доске или сигнализация о том что случилось (яркий пример - Пат) или например, проработка того, что в какой-то момент король может сделать рокировку, а в какой-то момент уже нельзя. Работа со временем в партиях. Реализация режима игры с самим собой. Работа с механикой короля и пешки (возможные ходы и те или иные ситуации как взятие пешки на проходе или та же рокировка, шахи).
-
Судаков Илья: Работа с механикой ферзя и коня, графическое представление игры: поле, фигуры, подсветка возможных ходов и др., реализация звукового сопровождения (сигнализация о ходе, фоновая музыка, победа/поражение, звуки при взаимодействии с интерфейсом игры, например, нажатие на кнопки в меню), подготовка Шашки mode.
- Настройка SFML на компьютерах каждого из участников.
- Разбор базовых туториалов по библиотеке, например, тут. Посмотрели процесс компиляции здесь.
- Углубление в модули SFML и понимания того, что нам нужно. В настоящий момент мы выбираем нужные нам методы из библиотеки и пытаемся осознать, как имеющуюся документацию приложить к требованиям по интерфейсу для нашей игры. Так, базово нам нужно три вещи, которые уже были озвучены ранее:
- Мы хотим, чтобы игроки могли играть по сети и обмениваться сообщениями друг с другом - используем модуль network.
- Хотим, чтобы была фоновая музыка, клики и прочие звуковые сопровождения при взаимодействии с интерфейсом игры - используем audio.
- И самое нужное и необходимое для нас это графика, отвечающая за всю суть игры, для этого нам необходим соответствующий модуль graphics.
- Проработка базовой архитектуры проекта. Для фигур мы будем делать соответствующий класс Figure, где будут изменяющиеся поля для идентификации каждой из фигур (белые/черные, король/пешка/ферзь/..), общие методы (например, когда фигуру срубили), допустимые и невозможные ходы для каждой из фигур (это будет std::vector, куда при каждом ходе мы будем обсчитывать для фигуры, куда ей можно и нельзя), сеттеры/геттеры. Также будет реализован класс для поля Chessboard, где будут массивы размера 16 элементов класса Figure для белых и для черных, будет трекаться ситуация о том произошел мат или нет, чей сейчас ход, будет делаться выбор фигуры для хода и соответствующих изменений на доске в графическом смысле, а также будут сделаны методы для калькуляции ходов и ситуации на доске, то есть как раз будет заполняться std::vector с возможными и невозможными ходами для каждого объекта класса Figure. И соответственно мы начинаем понимать, где нужно будет вставить и воспроизвести аудиофайл или вывести картинку, все это будет выполняться в большом процессе калькуляции ходов для каждой из 16 фигур (кол-во фигур либо у белых, либо у черных), то есть множестве методов для каждой из 6 возможных фигур в шахматах.