Перечень используемых функций
ЗАДАНИЕ
на выполнение курсовой работы по дисциплине
«Основы программирования систем управления»
Студент Пытин Ф.Н. Группа КРБО-04-19
Тема : Реализация компьютерной игры типа «Арканоид»
Исходные данные:
Перечень вопросов, подлежащих обработке, и обязательного графического материала:
Срок представления к защите курсовой работы: | до «____» _____________ 2020 г. | |
Задание на курсовую работу выдал | ____________________ | |
«____» _____________ 2020 г. | ||
Задание на курсовую работу получил | ___________________ |
Содержание
Введение.......................................................................................................... 3
1 Общие сведенья............................................................................................ 4
1.1 Среда разработки................................................................... 4
1.2 Язык программирования Python........................................... 4
2 Ход выполнения работы.............................................................................. 5
2.1. Геймплея и программная концепция игры «Арканоид»...... 5
Геймплей......................................................................................... 5
«Игровой цикл».............................................................................. 6
Коллизии объектов......................................................................... 6
Генерация блоков........................................................................... 8
Текстовые оповещения игрока....................................................... 9
Используемые клавиши................................................................ 11
2.2 Перечень используемых функций........................................ 12
|
|
2.3 Перечень используемых переменных.................................. 15
3 Результат выполнения работы.................................................................. 16
Вывод............................................................................................................. 16
Список литературы....................................................................................... 16
Приложение 1................................................................................................ 16
Введение
В нынешнее время компьютерные игры являются плодами целой индустрии, состоящей из большого количества компаний – гигантов с многомиллионной рыночной капитализацией. Компьютерные игры будоражат нас своими возможностями, в плане геймплея, литературной составляющей, если в них присутствуют сюжет, графической составляющей, духом соперничества или сотрудничества, в многопользовательских играх и т.д. и т.п. Однако все выше пересиленные прелести компьютерных игр требуют немало навыков и опыта в плане программирования, в широк понимании этого слова. В связи с этим, можно вполне обосновано утверждать, что программирование игр – это очень неплохая практика для программиста с точки зрения познания новых и закрепления имеющихся знаний и навыков в разных областях программирования. Здесь, в качестве практической задачи, будет разрабатываться игра под названием «Арканоид».
|
|
Цель работы: формирование и выработка знаний, умений и навыков, полученных в рамках теоретического курса обучения.
Задача: Используя специальный модуль для Python – PyGame, написать программу, которая будет содержать «игровой цикл» и специальные объекты модуля PyGame, обеспечивающие интерактивное взаимодействие пользователя и программы.
1 Общие сведенья
Среда разработки
В качестве среды разработки был выбран PyCharm. PyCharm — это кроссплатформенная среда разработки для языка программирования – Python, которая имеет: средства для анализа кода и удаленной разработки, графический отладчик и поддержку веб-разработки на Django.
Язык программирования Python
Python - императивный и высокоуровневый язык программирования, который поддерживает: объектно-ориентированное и функциональное программирование. Так же python имеет автоматическое управление памятью и кроссплатформенность. Данный язык отличается более понятным синтаксисом на фоне своих конкурентов: Си или С++, что в свою очередь уменьшает человеческий фактор. Однако, python уступает некоторым языкам программирования в скорости выполнения программ.
2 Ход выполнения работы
|
|
1.
2.
Геймплея и программная концепция игры «Арканоид»
Геймплей
С точки зрения геймплея, «Арканоид», реализуемый в данной работе ничем не отличается от его классического аналога. Пользователь должен «уничтожить» все блоки, чтобы победить в игре. Для их уничтожения пользователь использует шарик, который перемещается по полю и отскакивает от: блоков, верхней, левой и правой стенки, но не от нижней. При столкновении с нижней стенкой игрок проигрывает (или теряет одну жизнь). А чтобы этого не допустить игрок управляет платформой для отражения шарика, которая может перемещаться либо влево, либо вправо.
«Игровой цикл»
С программной точки зрения, «Арканоид» — это бесконечный цикл (while True), который прервётся только в нескольких случая (если учитывать только штатные ситуации):
· Победа игрока
· Проигрыш игрока
· Нажатие кнопки “Esc”
В самом бесконечном цикле или, как его по-другому называют - «игровой цикл» выполняются следующие условные этапы:
· Проверка на нажатие/отжатие кнопок клавиатуры
· Инициализация местоположения платформы
· Инициализация местоположения шарика
· Инициализация взаиморасположения и взаимодействия шарика и платформы
|
|
· Инициализация взаиморасположения и взаимодействия шарика и стенок
· Инициализация взаиморасположения и взаимодействия шарика и блоков
· Отрисовка заднего фона и фонового текста
· Отрисовка всех вышеописанных «активных» объектов: шарика, платформы и блоков.
Примечание: термин «игровой цикл» взят из источника [1].
Коллизии объектов
Отдельное место в этой программе занимают коллизии (процесс столкновения чего-либо) между шариком, платформой и блоками. Так как в модуле PyGame нет метода для коллизии круга, она будет заменена коллизиями прямоугольников. То есть, вместо круга программа будет рисовать определенное число прямоугольников с общим центром (см. Рисунок 1) (для большего понимания прямоугольники закрашены разными цветами), в результате чего, пользователь будет видеть уже псевдокруг, который состоит из совокупности прямоугольников одного цвета. (см. Рисунок 2)
Рисунок 1 - Псевдокруг составленный из прямоугольников
Рисунок 2 - Псевдокруг, который видит пользователь
Исходя из вышеописанной коллизии, программа будет осуществлять инициализацию взаиморасположения и взаимодействия шарика, блоков и платформы
Генерация блоков
Описывая данную программу, нельзя забывать про генерацию блоков. Их генерация осуществляется путём создания списка, через циклы, методом append. В результате чего получается определённая расстановка блоков
(см. Рисунок 3). Здесь они могут иметь 3 цвета, которые характеризуют их «прочность»:
· красный – прочность 3
· жёлтый – прочность 2
· зелёный – прочность 1
Рисунок 3 - Расположение блоков на игровом поле
Прочность блока уменьшается на 1 единицу прочности, а его цвет меняется на соответствующий прочности блока, вследствие его коллизии с шариком. Если шарик сталкивается с блоком зелёного цвета, то блок исчезает. Когда игроком будут выбиты все блоки, то объявляется победа
(см. Рисунок 4)
Текстовые оповещения игрока
Для информирования игрока о текущем состоянии разных параметров игры, в ней используется текст, который отображает следующие параметры:
· Очки игрока (верхний левый угол поля) (см. Рисунок 4)
· Жизни игрока (верхний левый угол поля) (см. Рисунок 4)
· Состояние игры – отображается в случае поражения или победы игрока (середина поля) (см. Рисунок 4)
· Подсказка – (верхний правый угол поля) отображается в случае нахождения шара на платформе, когда он не двигается «приклеен к платформе» (см. Рисунок 5).
Рисунок 4 - Объявление победы игрока
Рисунок 5 - Игрок выбирает, в какую сторону полетит шарик
Используемые клавиши
Для осуществления управления программой, пользователю (игроку) предоставляется список следующих клавиш (для обозначения клавиш используются английские буквы):
· Управление состоянием программы
o Клавиша Esc – при её нажатии, окно игры закрывается
· Управление игровым процессом
o Клавиша «p» - при её нажатии, игра останавливается (пауза, в игровом понимании)
o Клавиша «o» - при её нажатии, игра выходит из паузы в нормальное состояние
· Управление игровым объектом (платформой)
o Клавиша «стрелка влево» - при её нажатии, платформа передвигается влево
o Клавиша «стрелка вправо» - при её нажатии, платформа передвигается вправо
o Клавиша «1» - при её нажатии, шарик «выстреливается» платформой влево
o Клавиша «3» - при её нажатии, шарик «выстреливается» платформой вправо
Перечень используемых функций
В данной программе присутствуют следующие функции:
· cos_loc(angle) – Функция вычисление косинуса через радианы
· sin_loc(angle) – Функция вычисление синуса через радианы
· drawText (text, font, surface, x, y) - Функция отображения текста
· BlockClashUpDown (directionY, score, b) - Функция для проверки на столкновение сверху и снизу блока
· BlockClashLeftRight (directionX, score, b) - Функция для проверки на столкновение слева и справа блока
Функции cos_loc (angle) и sin_loc (angle) используется для вычисления координат х и у соответственно для будущих прямоугольников, которые будут составлять псевдокруг для коллизии (см. Рисунок 1). В модуле PyGame, эти самые прямоугольники размещаться на игровом поле путем задания координат их левого верхнего угла против часов стрелки. При этом эти координаты размещаются через определённое количество градусов, которое указываться в аргументе – angle. Для упрощения понимания стоит вспомнить тригонометрический круг (см. Рисунок 6). На этом рисунке, как и в псевдокруге присутствую несколько прямоугольников, которые располагаются таким же образом, как и в программе. Их отличие заключается только в количестве этих самых прямоугольников, в программе их должно быть не менее 10, так как иначе не получиться «полноценный» псевдокруг с точки зрения его коллизии.
Рисунок 6 - Тригонометрический круг
Функция drawText (text, font, surface, x, y) используется для упрощения процесса «размещения» текста на игровом поле и имеет следующие аргументы:
· text – в данный аргумент записывается сам текст (переменная
формата str), который будет отражаться на игровом поле.
· font – данный параметр служит для инициализации параметров самого текста: шрифт и размер текста
· surface – параметр для инициализации поверхности на которой будет размещаться текст
· x, y – параметры, с помощью которых задаются координаты размещения текста
Функция BlockClashUpDown (directionY, score, b) используется для упрощения фиксирования самого факта коллизии блока с шариком в верхней и нижней части блока и имеет следующие аргументы:
· directionY – аргумент, в который записывается направление шарика по вертикали. При исполнении данной функции, у directionY меняется знак, что в свою означает что при столкновении с блоком шарик должен отскочить от блока в противоположенном направлении по вертикали
· score – количество очков «прочности» блока, с которым сталкивается блок. Назначение данной переменной описано в подзаголовке – Генерация блоков
· b – аргумент, который играет роль итератора в списке, в котором хранятся все блоки.
Функция BlockClashLeftRight (directionX, score, b) используется точно также, как функция BlockClashUpDown (), но с одним отличием. Вместо аргумента directionY у неё directionX.
· directionX - аргумент, в который записывается направление шарика по горизонтали. При исполнении данной функции, у directionX меняется знак, что в свою означает что при столкновении с блоком шарик должен отскочить от блока в противоположенном направлении по горизонтали
Дата добавления: 2020-11-15; просмотров: 183; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!