ГАОУ ВО «Дагестанский государственный университет народного хозяйства» Бизнес-колледж специальность СПО 09.02.03 Программирование в компьютерных системах Кафедра «Информационные системы и программирование» КУРСОВОЙ ПРОЕКТ ПО ДИСЦИПЛИНЕ «ИНСТРУМЕНТАЛЬНЫЕ СРЕДСТВА РАЗРАБОТКИ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ» ТЕМА: «Экшен игра «Космический защитник».» РУКОВОДИТЕЛЬ ВЫПОЛНИЛ (А) ШИФР ГРУППЫ Курсовая работа сдана руководителю Дата__________ Подпись_______ Ахмедова Саида Залимхановна ПвКС31 11 Проверена и возвращена на доработку Дата___________ Подпись________ Проверена после доработки и допущена к защите Дата__________ Подпись_______ Проверена и допущена к защите Дата___________ Подпись________ Дата защиты курсовой работы_______________________________________ Отметка о защите__________________________________________________ Рецензия руководителя _________________________________________________________________________ ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------___________________________________________________________________ Подпись зав. кафедрой____________ Махачкала 2023г. Оглавление Введение ...................................................................................................................................3 Глава 1. Понятия и особенности объектно-ориентированного программирования .....5 1.1 Принципы объектно- ориентированного программирования ............................................ 6 1.2 Преимущества объектно- ориентированного программирования ..................................... 8 1.3 Альтернативные методы объектно- ориентированного программирования .................. 11 Глава 2. Разработка игры средствами языка Python .......................................................13 2.1 Язык программирования Python........................................................................................... 13 2.2 Игровая библиотека Pygame .................................................................................................. 16 2.3 Интегрированная среда разработки ..................................................................................... 19 2.4 Разработка игры «Космический Защитник» ....................................................................... 24 Заключение ............................................................................................................................32 Список литературы ..............................................................................................................33 2 Введение Профессия программиста, игрового дизайнера, аниматора очень популярна в современном мире. Это связано с высокой заработной платой в этой сфере программирования, а так же общим престижем данной профессии. Несмотря на сложности обучения разработки игр и их дизайна, такие площадки как AppStore и Play Market предлагают более 1,5 миллиона различных игр. Это означает, что множество маленьких компаний, а, иногда, и несколько людей ежедневно выпускают небольшие игры. Актуальность: на данный момент, рынок компьютерных игр испытывает сильный подъем, так общий объем российского рынка видеоигр по итогам 2021 года достиг 177 миллиарда рублей, увеличившись на 9% в сравнении с прошлым годом. Несмотря на то, что самым быстрорастущим сегментом рынка стали мобильные игры, самой доходной платформой остается ПК. Эти данные говорят о том, что компьютерные игры крайне популярны в самых различных социальных группах, для кого-то игры стали обыденной частью жизни. Цель курсового проекта: разработка игры средствами объектноориентированного программирования. Для реализации необходимо выполнить следующие задачи: Изучить теоретические аспекты разработки игр; Провести сравнительный анализ существующего ПО для создания игры; Изучить выбранную среду разработки; Определить структуру и внешний вид игры; Создать и проверить работоспособность игры. Первая часть включает в себя постановку задачи, основные понятия и характеристику предметной области. Вторая часть включает в себя анализ и выбор программных средств для реализации поставленной задачи по разработке игры. 3 Третья часть включает в себя анализ, проектирование, отладку, непосредственное создание игры и описание проделанной работы. 4 Глава 1. Понятия и особенности объектно-ориентированного программирования Программирование – не линейный или строго регламентированный процесс. В этой среде существуют разные принципы, подходы и стратегии, позволяющие составлять код в рамках заданного проекта. Объектноориентированное программирование (ООП) – это как раз одна из существующих парадигм. Рассмотрим, какие у нее особенности. Объектно-ориентированное программирование (ООП) – парадигма программного кода, в которой центральную роль занимают объекты и данные, а не логические структуры и функции. Если сравнить процесс программирования с ремонтом квартиры, то парадигмой будет схема расположения мебели в комнатах. Эта характеристика сокращает количество ошибок, систематизирует данные, приводит их в удобный для восприятия вид. В рамках ООП первым делом создаются отдельные объекты (товары), заполняемые данными (наименование, характеристики, описание и т. д.), а только потом прописываются взаимодействия. В функциональном программировании первой появляется функция, которой прописываются задачи по созданию товарных карточек (объектов). Рассматриваемая парадигма предполагает, что у кода есть 4 центральных элемента, объединенных в структуру: 1. Класс. Если рассматривать информационный сайт, классом могут выступать «Статьи», интернет-магазин – «Карточки товаров». Это своего рода шаблон для формирования объектов – конкретных статей или товаров на витрине. Также существуют подклассы («Статьи о программировании»), уточняющие информацию. Основные принципы берутся у родительского класса, но появляются и уникальные свойства (например, диагональ экрана в карточке смартфона). 2. Объект. Код, описывающий элемент с четко определенными свойствами и задачами. Страница холодильника в каталоге магазина бытовой 5 техники – это объект. Как и кнопка «Добавить в корзину», поскольку она предназначена именно для этого холодильника. 3. Метод. Программный код, отвечающий за взаимодействие. Например, в конце информационной статьи часто встречает блок «Похожие материалы». Благодаря методу информация из начального текста сравнивается с другими, и пользователю предлагаются идентичные. 4. Атрибут. Свойства объекта: размер статьи, производитель смартфона, цена и т. д. Для товарной карточки «класс» задает инструкцию по формированию и прописывает возможные «атрибуты». Это первое, что создается при кодинге. Далее вступают «методы», заполняющие «объекты» информацией. 6 1.1. Принципы объектно-ориентированного программирования. Помимо структуры существуют принципы, отвечающие за логику взаимодействия структурных элементов. Модель строится на четырех «столпах» – инкапсуляции, полиморфизме, наследовании и абстракции (некоторые специалисты не выделяют абстракцию, считая ее частью наследования). Рассмотрим их по отдельности, одновременно иллюстрируя примерами из повседневной жизни (кстати, одна Инкапсуляция Обычному пользователю совершенно не нужно знать, как работают некоторые внутренние функции. Например, для отправки сообщения через мессенджер вам потребуется только номер получателя, а не сведения о способах обработки данных, преобразования текста, вывода информации и т. д. Принцип инкапсуляции («сокрытия») основан на «ограждении» пользователя от ненужных ему методов в рамках класса и предоставлении доступа только к необходимым интерфейсам. В результате повышается безопасность, а вероятность возникновения ошибок снижается. В представленном выше коде PHP есть класс Human («Человек») с приватным полем sex («пол»). Доступ к полю из других классов запрещен – в этом и есть инкапсуляция. Также при попытке ввести данные, отличающиеся от male или female («мужской» и Наследование «женский») Наследование ориентированного – появится знаковый программирования. Суть сообщение инструмент его об ошибке. объектно- заключается в «копировании» функций базового класса для создания новых. Причем между двумя этими классами остается взаимосвязь, и любые изменения в «родительском» автоматически отразятся на «наследнике». 7 В примере на Java есть два класса – «родительский» Person («Человек») и «наследник» Employee («Работник»). Конечно, можно просто создать две разные группы, но тогда программа не будет улавливать связь между ними. Ведь работник остается все тем же человеком с именем и возрастом, но теперь у него есть новая характеристика – рабочий адрес. За счет функции наследования (в данном языке программирования это extends) мы сократили количество строк кода и закрепили зависимость Employee от Person. Полиморфизм Пример полиморфизма на Python: Полиморфизм – способность объектов программирования менять реализацию задачи в зависимости от условий. Проще всего это рассмотреть на примере. У нас есть два класса в коде Python – French и English. Итоговая цель одна – вывод приветствия. Но для англичан нужно выводить «Hello», а для французов – «Bonjour». То есть, при одном интерфейсе применяются разные методы. Другой пример из географии. Есть классы геометрических фигур – квадрат и прямоугольник. Для них нужно выводить одинаковые по содержанию и единицам измерения числа – площади. Но формулы (методы), по которым считаются площади круга и квадрата, отличаются друг округа. Задача стоит одинаковая, а реализация разная. В этом и кроется полиморфизм. Абстракция Помимо стандартных существуют так называемые абстрактные классы. Они олицетворяют то, что не имеет физического представления в нашем понимании. Например, мы не можем представить абстрактное понятие «фигура». Квадрат, прямоугольник, круг – да. Но не фигуру в общем смысле. При этом перечисленные объекты имеют что-то общее (площадь) и все являются фигурами, поэтому их можно объединить под одним абстрактным классом. 8 1.2 Преимущества объектно- ориентированного программирования. Идеального решения нет, иначе существовало бы только оно. ООП имеет ряд знаковых преимуществ и недостатков, о которых нельзя забывать. Начнем с плюсов: Удобство проектирования.Писать код в соответствии с парадигмой объектно-ориентированного программирования гораздо удобнее. Достаточно один раз продумать все классы, методы и атрибуты, обозначить их, а потом формировать безграничное количество объектов. Воспользовавшись общедоступными рекомендациями, позволяющими избежать ошибок. Удобство чтения. Воспринимать «сухой» код в таком виде гораздо проще. Даже малоопытный Full Stack разработчик, знакомый с основными принципами, различит структуру в чужом коде. Упрощаются поиск нужных частей и исправление недочетов. Простота обновления. Если нам захочется изменить все карточки товаров, не придется работать над каждой страницей отдельно. Достаточно вернуться к базовому классу и внести нужные правки – они автоматически «подтянутся» к подклассам и объектам. Повторное использование кода. Достаточно один раз написать код для кнопки «Добавить товар в корзину», и потом его можно использовать в других интернет-магазинах, мобильных версиях и т. д. ООП исключает повторное программирование, которое повышает шанс возникновения ошибок и значительно замедляет разработку. Применимость шаблонов. Некоторые взаимодействия вообще не придется «изобретать» самому (их, на самом деле, большинство). Ведь давно существуют общие шаблоны, в которые достаточно внести индивидуальные правки. Именно благодаря ООП такая база вообще стала возможной. Первый недостаток, бросающийся в глаза – сложность освоения. У вас не получится с ходу написать первую программу по объектно- ориентированной парадигме, в отличие от функциональной. Придется 9 разобраться как минимум в структуре и принципах, взаимодействии объектов, принципе наследования, видах функций. Вторая проблема – громоздкость. Там, где в рамках функционального программирования нужно прописать всего одну функцию, ООП требует создания всей структуры, включая классы, методы, атрибуты и объекты. В некоторых случаях это хорошо – информация становится нагляднее. Но когда речь идет о простых программах, ярко проявляется громоздкость кода. Отсюда вытекает еще один минус – низкая производительность. ООП потребляет больше энергии, требует внушительных ресурсов, отчего страдает скорость компиляции. 10 1.3 Альтернативные методы объектно- ориентированного программирования. Многие популярные языки создавались специально для облегчения ООП. Отметим, что эта техника весьма гибкая и применяется даже в изначально не-объектно-ориентированных языках. Частое явление – добавление к базовому набору атрибутов своих уникальных средств: • конструкторов (деструкторов); • аксессоров; • свойств видимости; • финализаторов; • индексаторов. Среди языков, которые полностью отвечают принципам объектноориентированного программирования, числятся Smalltalk и Eiffel. Здесь каждый элемент – объект, и все они взаимодействуют по заданным методам. Есть и гибриды – Objective-C, Dylan, Ruby, Python. Цель таких систем – предложить «несколько языков в одном», стереть границы между разными парадигмами, применять принципы ООП там, где это требуется, или не применять в остальных случаях. Здесь множественная диспетчеризация спокойно сосуществует вместе с параметрическими классами и другими парадигмами. Наибольшую же популярность завоевали языки, позволяющие «эмулировать» объектную технологию в другой традиционной среде – императивной семантике. Алан Кэй, выдающийся американский ученый в области теории вычислительных систем и пионер ООП, назвал их «языками со склеенными возможностями». Примеры – Delphi, PHP, C#, Java, Visual Basic. Таким, образом, объектно-ориентированное программирование – способ концептуализации, организации и структурирования кодинга. В среде разработчиков его называют парадигмой. 11 ООП имеет структуру. Каждый класс описывает концепцию построения объектов и задает атрибуты, а с помощью методов конкретные элементы наполняются информацией. Центральные принципы ООП – наследование, инкапсуляция, абстракция, полиморфизм. Они лежат в основе парадигмы, с их помощью строятся правила создания и взаимодействия. Масса современных языков придерживаются принципов ООП (в полной мере или частично). Среди них Python, Ruby, C++, Visual Basic, Delphi, Java, PHP. Объектно-ориентированное программирование упрощает написание кода, ускоряет работу за счет применимости шаблонов, повышает удобство восприятия информации. Плюс, вносить изменения и искать ошибки в такой четкой структуре гораздо легче. Но в некоторых ситуациях громоздкий код становится обузой, а скорость компиляции доставляет неудобства пользователям. К тому же, для освоения ООП потребуется больше времени. 12 Глава 2. Разработка игры средствами языка Python 2.1 Язык программирования Python Python—это язык компьютерного программирования, часто используемый для создания веб-сайтов и программного обеспечения, автоматизации задач и проведения анализа данных. Python - это язык общего назначения, что означает, что он может использоваться для создания множества различных программ и не специализирован для каких-либо конкретных задач. Эта универсальность, наряду с удобством для начинающих, сделала его одним из наиболее часто используемых языков программирования сегодня. Python обычно используется для разработки веб-сайтов и программного обеспечения, автоматизации задач, анализа данных и визуализации данных. Поскольку Python относительно прост в освоении, он был принят многими непрограммистами, такими как бухгалтеры и ученые, для различных повседневных задач, таких как организация финансов. С помощью Python’a можно реализовать следующие задачи: Анализ данных и машинное обучение; Создание веб-приложений; Разработка игр; Тестирование программного обеспечения; Повседневные задачи и т.д. Анализ данных и машинное обучение Python стал основным языком в науке о данных, позволяя аналитикам данных и другим специалистам использовать язык для проведения сложных статистических вычислений, создания визуализации данных, построения алгоритмов машинного обучения, обработки и анализа данных, а также выполнения других задач, связанных с данными. Python может создавать широкий спектр различных визуализаций данных, таких как линейные и столбчатые графики, круговые диаграммы, гистограммы и 3D-графики. Python также имеет ряд библиотек, которые 13 позволяют программистам быстрее и эффективнее писать программы для анализа данных и машинного обучения, такие как TensorFlow и Keras. Веб-разработка Python часто используется для разработки серверной части веб—сайта или приложения - частей, которые пользователь не видит. Роль Python в вебразработке может включать отправку данных на серверы и с серверов, обработку данных и взаимодействие с базами данных, маршрутизацию URLадресов и обеспечение безопасности. Python предлагает несколько фреймворков для веб-разработки. Обычно используемые из них включают Django и Flask. Некоторые включают задания инженеров по веб-разработке, серверной части, использующие инженеров Python, полного стека, разработчиков Python, инженеров-программистов и инженеров DevOps. Тестирование программного обеспечения При разработке программного обеспечения Python может помочь в таких задачах, как управление сборкой, отслеживание ошибок и тестирование. С помощью Python разработчики ПО могут автоматизировать тестирование новых продуктов или функций. Некоторые инструменты Python, используемые для тестирования программного обеспечения, включают Green и Requestium. Повседневные задачи Python предназначен не только для программистов и специалистов по обработке данных. Изучение Python может открыть новые возможности для тех, кто работает в профессиях с меньшим объемом данных, таких как журналисты, владельцы малого бизнеса или маркетологи социальных сетей. Python также может позволить непрограммистам упростить определенные задачи в своей жизни. Вот некоторые задачи, которые вы можете автоматизировать с помощью Python: Следите за ценами на фондовом рынке или криптовалюте 14 Отправьте себе текстовое напоминание о необходимости носить с собой зонтик в любое время, когда идет дождь Обновите свой список покупок продуктов Переименование больших пакетов файлов Преобразование текстовых файлов в электронные таблицы Случайным образом распределяйте обязанности по дому между членами семьи Заполняйте онлайн-формы автоматически Разработка игр GameDev —это не просто модный тег, созданный для описания прикладной сферы использования языков программирования. Разработка игр - это глубокий и насыщенный мир, в котором одинаково комфортно чувствуют себя как подростки, только начинающие изучать кодинг и создающие свои первые игры, так и титаны индустрии, зарабатывающие миллионные состоянии на деле, приносящем не только доход, но и эстетическое удовольствие. Истоки многих крупных игровых стартапов находятся именно в любительском программировании игр и графики. 15 2.2 Игровая библиотека Pygame Pygame - это кроссплатформенный набор модулей Python, который используется для создания видеоигр. Он состоит из компьютерной графики и звуковых библиотек, предназначенных для использования с языком программирования Python. Pygame подходит для создания клиентских приложений, которые потенциально могут быть обернуты в отдельный исполняемый файл. Поверхность Pygame Поверхность pygame используется для отображения любого изображения. Поверхность имеет предопределенное разрешение и формат в пикселях. Цвет поверхности по умолчанию черный. Его размер определяется путем передачи аргумента size. Поверхности могут иметь ряд дополнительных атрибутов, таких как альфа-плоскости, цветовые клавиши, обрезка исходного прямоугольника и т.д. Процедуры blit будут пытаться использовать аппаратное ускорение, когда это возможно; в противном случае они будут использовать высокоэффективные программные методы блиттинга. Часы Pygame Время в pygame представлено в миллисекундах (1/1000 секунд). Часы Pygame используются для отслеживания времени. Время необходимо для создания движения, воспроизведения звука или реакции на любое событие. Часы также предоставляют различные функции, помогающие контролировать частоту кадров в игре Блиттинг Pygame Pygame blit - это процесс рендеринга игрового объекта на поверхности, и этот процесс называется блиттингом. Когда мы создаем игровой объект, нам нужно его визуализировать. Если мы не будем рендерить игровые объекты и запускать программу, то на выходе она выдаст черное окно. 16 Блиттинг - одна из самых медленных операций в любой игре, поэтому нам нужно быть осторожными, чтобы не слишком много блиттинга на экране в каждом кадре. Rect Pygame Rect используется для рисования прямоугольника в Pygame. Pygame использует объекты Rect для хранения прямоугольных областей и управления ими. Прямоугольник может быть сформирован из комбинации значений left, top, width и height. Он также может быть создан из объектов Python, которые уже являются ректором и имеют атрибут с именем "rect". Функция rect() используется для изменения положения или размера прямоугольника. изменениями. В Он возвращает новую исходном копию Rect с прямоугольнике никаких внесенными изменений не происходит. Pygame Keydown Pygame KEYDOWN и KEYUP обнаруживают событие, если клавиша физически нажата и отпущена. Нажатие клавиши определяет нажатие клавиши, а нажатие клавиши определяет отпускание клавиши. Оба события (нажатие клавиши и отпускание клавиши) имеют два атрибута: key— это целочисленный идентификатор, который представляет ключ для каждой клавиши на клавиатуре; mod— это битовая маска всех клавиш-модификаторов, которые находились в нажатом состоянии, когда произошло событие. Преимущества Python: Python популярен по целому ряду причин. Вот более глубокий взгляд на то, что делает его таким универсальным и простым в использовании для программистов. Он имеет простой синтаксис, имитирующий естественный язык, поэтому его легче читать и понимать. Это позволяет быстрее создавать проекты и быстрее их улучшать. 17 Он универсален. Python можно использовать для самых разных задач, от веб-разработки до машинного обучения. Он удобен для начинающих, что делает его популярным среди программистов начального уровня. Это открытый исходный код, что означает, что его можно бесплатно использовать и распространять, даже в коммерческих целях. Архив модулей и библиотек Python — пакетов кода, созданных сторонними пользователями для расширения возможностей Python, - огромен и постоянно растет. Python имеет большое и активное сообщество, которое вносит свой вклад в пул модулей и библиотек Python и служит полезным ресурсом для других программистов. Обширное сообщество поддержки означает, что если программисты сталкиваются с камнем преткновения, найти решение относительно легко; кто-то обязательно сталкивался с такой же проблемой раньше. 18 2.3 Интегрированная среда разработки Интегри́рованная среда́ разрабо́тки, ИСP (англ. Integrated development environment — IDE), также единая среда разработки, ЕСР — комплекс программных средств, используемый программистами для разработки программного обеспечения (ПО). Среда разработки включает в себя: текстовый редактор, Транслятор (компилятор и/или интерпретатор), средства автоматизации сборки, отладчик. Иногда содержит также средства для интеграции с системами управления версиями и разнообразные инструменты для упрощения конструирования графического интерфейса пользователя. Многие современные среды разработки также включают браузер классов, инспектор объектов и диаграмму иерархии классов — для использования при объектноориентированной разработке ПО. ИСР обычно предназначены для нескольких языков программирования — такие как IntelliJ IDEA, NetBeans, Eclipse, Qt Creator, Geany, Embarcadero RAD Studio, Code::Blocks, Xcode или Microsoft Visual Studio, но есть и IDE для одного определённого языка программирования — как, например, Visual Basic, Delphi, Dev-C++. Частный случай ИСР — среды визуальной разработки, которые включают в себя возможность наглядного редактирования интерфейса программы. PyCharm — интегрированная среда разработки для языка программирования Python. Предоставляет средства для анализа кода, графический отладчик, инструмент для запуска юнит-тестов и поддерживает веб-разработку на Django. PyCharm разработана компанией JetBrains на основе IntelliJ IDEA. PyCharm — это кроссплатформенная среда разработки, которая совместима с Windows, MacOS, Linux. PyCharm Community Edition 19 (бесплатная версия) находится под лицензией Apache License, а PyCharm Professional Edition (платная версия) является проприетарным ПО. Плагины. Пользователи могут сами писать свои плагины, тем самым расширять возможности PyCharm. Некоторые плагины из других JetBrains IDE могут работать с PyCharm. Существует более тысячи плагинов, совместимых с PyCharm. Лицензионную бесплатную версию PyCharm можно установить на официальном сайте разработчиков. Помимо установки на сайте можно связаться с разработчиками, купить курс обучения, а так же купить премиум версию. Рис. 1. Главная страница сайта PyCharm. При нажатии кнопки «нажать» и выбора версии (базовая/премиум) на ПК загрузится установщик, выбранной версии. 20 Рис. 2. Установщик базовой версии PyCharm. После установки и создания проекта окно PyCharm будет иметь следующий вид. Рис. 3. Начальный вид среды разработки. 21 Сверху находится панель инструментов PyCharm. Рис. 4. Панель инструментов PyCharm Справа в верхнем углу расположены кнопки для запуска и отладки проектов или файлов. Рис. 5. Кнопки запуска и отладки проекта. Слева расположено древо файлов проекта. 22 Рис. 6. Древо файлов проекта. По центру расположено окно с кодом. Рис. 7. Окно с кодом. В нижней части экрана находится окно с консолью, терминалом, информацией об ошибках и т.д. Рис. 8. Нижняя часть окна, содержащая консоль, терминал и т.д. 23 2.4 Разработка игры «Космический Защитник» В рамках курсового проекта была разработана игра «Космический защитник» с использованием объектного подхода на языке Python. Для удобства и понятности кода следует разделить код на файлы, в каждом из которых будет обработчик событий или обновление рекордов и так далее. По этой причине в файл, запускающий игру для начала нужно импортировать файлы управления, оружия, рекордов и т.п. Рис. 9. Импорт файлов и библиотек. Для запуска игры нужно прописать функцию, благодаря которой будет создаваться окно с игрой со всеми элементами игры. Рис. 10. Функция для создания игрового окна. Чтоб игра реагировала на события, происходящие в ней нужно прописать цикл While. Рис. 11. Цикл, обновляющий отображение элементов в игровом окне 24 Рассмотрим файл, который отвечает за движение и инициализацию пушки. Для начала стоит отметить, что для того чтобы пушка двигалась нужно добавить класс Sprite. Спрайт—это элемент компьютерной графики, представляющий объект на экране, который может двигаться. В двухмерной игре все, что отображается на экране, является спрайтами. Спрайты можно анимировать, заставлять их взаимодействовать между собой или передавать управление ими игроку. В этом классе будет храниться вся информация о нашей пушке. Далее нужно написать функцию для инициализации пушки. Рис. 12. Функция инициализации пушки. Так же нужно написать функции для отображения пушки в игровом окне. Рис. 13. Функция для отображения пушки. Для того, чтобы наша пушка двигалась при нажатиях на клавиатуру нужно прописать функцию. 25 Рис. 14. Функция обновления позиции пушки. Ну и для отображения пушки внизу экрана нужно прописать следующую функцию. Рис. 15. Функция, размещающая пушку по центру окна. Далее разберем функцию, которая реагирует на нажатия на клавиши. Рис. 16. Обработка нажатий клавиш WASD, используемых для перемещения пушки. Для того, чтобы понимать следующие функции в файле controls.py следует разобрать класс и функции инициализации, перемещения и вывода на экран пришельцев. 26 Рис. 17. Функции связанные с отображением и перемещением пришельцев. Теперь рассмотрим класс и функции пули. Рис. 18. Функции вывода и перемещения пули по экрану. 27 Для вывода игровой информации, такой как: рекорд, количество жизней и очков перейдем файл scores.py, в котором будут написаны функции перевода счета в графическое изображение, подсчет очков и т.д. Рис. 19. Функции для вывода рекорда и счета. Для отображения количества жизней и вывода счета на экран напишем следующие функции Рис. 20. Функции отображения количества жизней и очков. После инициализации всех элементов игры вернемся в файл controls.py и пропишем такие функции как: обновление экрана, создание армии пришельцев, обновление позиции пуль, столкновение пушки с пришельцем 28 Рис. 21. Функция обновления экрана. Рис. 22. Функция для создания армии. Рис. 23. Функция для обновления позиции пуль в игровом окне. 29 Рис. 24. Реакция на столкновение пушки с пришельцем. Проверим уничтожаются ли пришельцы. Рис. 25. Уничтожение пришельцев. Пропишем функцию уничтожения пришельцев, в которых попала пуля. Рис. 26. Обновление позиции армии пришельцев. 30 Для того, чтобы проверять дошла ли армия до конца окна игры и забрать жизнь пропишем данную функцию. Рис. 27 Проверка позиции армии. Для обновления рекордов пользователя нужна функция. Рис. 28 Запись и обновление рекордов. Рис. 29. Финальный вид игры 31 Заключение Благодаря своей интерактивности и переносимости Python обладает хорошими возможностями для динамической семантики и быстрого прототипирования. приложений, даже Его в можно те, легко встроить которые в используют широкий спектр разные языки программирования. Поэтому с Python можно легко исправлять новые модули и расширять базовый словарный запас языка. Python позволяет разрабатывать понятные и простые приложения, которые легко превратить из небольшого проекта в полноценное сложное приложение. Независимо от того, являетесь ли вы программистом или владельцем своего бизнеса, Python может стать хорошим вариантом для разработки проектов разных типов. В рамках данного курсового проекта была раскрыта такая тема, как реализация объектно-ориентированного подхода в разработке игр на языке Python. Поставленная цель была достигнута, за счет выполнения следующих задач: были изучены теоретические аспекты разработки игр; проведен сравнительный анализ существующего ПО для создания игры; изучена среда разработки PyCharm; разработан алгоритм будущей программы; осуществлена программная реализация игры. Исходя из проделанной работы можно сделать вывод, что при правильном использовании нужных библиотек и методов можно значительно облегчить процесс программирования, а объектный подход в значительной степени придает процессу программирования творческий характер. 32 Список литературы Златопольский Д.М.Основы программирования на языке Python.– 1. М.: ДМК Пресс, 2018. – 284 с Федоров, Д.Ю.Программирование на языке высокого уровня 2. Python: учебное пособие для прикладного бакалавриата / Д. Ю. Федоров. – 2е изд., перераб. и доп. – Москва : Издательство Юрайт, 2019. – 161 с. – (Бакалавр. Прикладной курс). – ISBN 978-5-534-10971-9. – Текст: электронный // ЭБС Юрайт [сайт]. – URL:https://urait.ru/bcode/437489 (дата обращения: 13.02.2020). Гэддис Т.Начинаем программировать на Python. – 4-е изд.: Пер. с 3. англ. – СПб.: БХВ-Петербург, 2019. – 768 с. Шелудько, В. М.Основы программирования на языке высокого 4. уровня Python: учебное пособие / В. М. Шелудько. – Ростов-на-Дону, Таганрог: Издательство Южного федерального университета, 2020. – 146 c. – ISBN 978-5-9275-2649-9. – Текст: электронный // Электронно-библиотечная система IPR BOOKS: [сайт]. – URL: http://www.iprbookshop.ru/87461.html (дата обращения: 13.02.2020). – Режим доступа: для авторизир. пользователей 5. Рейтц К., Шлюссер Т.Автостопом по Python. – СПб.: Питер, 2019. – 336 с.: ил. – (Серия «Бестселлеры O’Reilly») 6. Любанович Билл Простой Python. Современный стиль программирования. – СПб.: Питер, 2019. – 480 с.: – (Серия «Бестсепперы O’Reilly»). 7. Гуриков, С.Р. Основы алгоритмизации и программирования на Python. Учебное пособие. Гриф МО РФ / С.Р. Гуриков. - М.: Инфра-М, Форум, 2018. -707c. 8. Эрик, Мэтиз Изучаем Python. Программирование игр, визуализация данных, веб-приложения / Мэтиз Эрик. - М.: Питер, 2018. 760c. 33