
Функция генерация возможных ходов
Блок-схема функции для генерации возможных ходов представлена на рисунке 6.
Рисунок 6 – Блок-схема функции генерация возможных ходов
Функция предназначена для просчитывания и нахождения возможных ходов для выбранной шашки, если найдены ударные ходы, поиск прекращается.
Создание массива с возможными ходами: создается пустой массив positions[], в который потом будут заноситься возможные ходы и который возвращает функция.
Задание дальности хода: установка соответствующего значения дальности хода, для обычных дамок – 2, для дамок – 7.
Цикл по направлениям хода: перебор всех направлений.
Обнуления числа встреченных препятствий: счетчик встреченных препятствий обнуляется при смене направления хода.
Цикл по дальности хода: перебор всех ячеек на текущем направлении хода.
На пути не было препятствий: если счетчик препятствий равен нулю, то далее происходит проверка на возможность ударного хода.
Если препятствий не было: происходит проверка на наличие вражеской шашки и пустой ячейки за ней, если условия выполняются, то этот ход заносится в массив positions[].
Если встречена союзная шашка, происходит переход на следующее направление, так как съесть союзную шашку мы не можем
Если активная шашка является дамкой, на направлении хода встречена вражеская шашка и за ней пусто, то в массив positions[] добавляются все ходы за этой шашкой до встречи препятствия.
Есть ударные ходы: если массив positions[] не пуст, то есть были обнаружены ударные ходы, происходит возвращение полученных ударных ходов и выход из функции.
Если ударных ходов не обнаружено, то происходит проверка на наличие возможных тихих ходов и добавление их в массив positions[] с дальнейшим его возвращением и выходом из функции.
3. ОБОСНОВАНИЕ ВЫБОРА И ОПИСАНИЕ СТЕКА ИСПОЛЬЗУЕМЫХ ТЕХНОЛОГИЙ
В разработке компьютерной игры в шашки были использованы следующие технологии:
Pygame для создания графического интерфейса:
Обоснование: Pygame предоставляет простой способ создания 2D игр и графических приложений на языке Python. Он включает в себя необходимые инструменты для обработки событий, отображения изображений и работы с графикой. В данном случае, Pygame используется для реализации графического интерфейса шашек, включая отрисовку доски и шашек.
Использование классов для представления клеток, шашек и игры:
Обоснование: Использование классов делает код более структурированным и обеспечивает объектно-ориентированный подход к разработке. Классы Node и Piece используются для представления клеток и шашек, соответственно, что делает код более читаемым и модульным.
Использование звуковых эффектов:
Обоснование: Звуковые эффекты (звук хода и звук съеденной шашки) добавляют визуальные и звуковые подсказки для пользователя, делая игру более интересной и понятной.
Использование иконок и изображений для шашек:
Обоснование: Загрузка иконок и изображений для шашек улучшает визуальное представление игры, делая ее более привлекательной. Вы также масштабируете изображения для стандартизации их размеров.
Использование библиотеки numpy для математических операций:
Обоснование: Библиотека numpy предоставляет эффективные средства для выполнения математических операций. В данном коде она используется для определения направления хода и удара, что способствует читаемости и эффективности кода.
4 АРХИТЕКТУРА РАЗРАБАТЫВАЕМОГО ПРИЛОЖЕНИЯ
Архитектура приложения представлена на рисунке 7.
Рисунок 7 – Архитектура разрабатываемого приложения
5 ПРИМЕРЫ РАБОТЫ ПРИЛОЖЕНИЯ
При запуске приложения на экране открывается окно с доской и шашками (Рисунок 8).
Рисунок 8 – Начальное состояние поля
При выборе шашки подсвечиваются ячейки для возможных ходов (Рисунок 9).
Рисунок 9 – Выбор хода
При достижении шашкой противоположной стороны поля, она превращается в дамку, меняется её изображение и правила хода (Рисунок 10).
Рисунок 10 – Ход дамки