Перечень используемых функций



ЗАДАНИЕ

на выполнение курсовой работы по дисциплине

«Основы программирования систем управления»

 

Студент Пытин Ф.Н. Группа КРБО-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; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!