0 added
0 removed
Original
2026-01-01
Modified
2026-03-10
1
<ul><li><a>Определение</a><ul><li><a>Плюсы</a></li>
1
<ul><li><a>Определение</a><ul><li><a>Плюсы</a></li>
2
<li><a>Минусы</a></li>
2
<li><a>Минусы</a></li>
3
</ul></li>
3
</ul></li>
4
<li><a>Игровой цикл</a></li>
4
<li><a>Игровой цикл</a></li>
5
<li><a>Pygame - это…</a><ul><li><a>Начало работы</a></li>
5
<li><a>Pygame - это…</a><ul><li><a>Начало работы</a></li>
6
<li><a>Пример приложения</a></li>
6
<li><a>Пример приложения</a></li>
7
<li><a>Рисование фигур</a></li>
7
<li><a>Рисование фигур</a></li>
8
<li><a>Цвета</a></li>
8
<li><a>Цвета</a></li>
9
<li><a>Текст и шрифт</a></li>
9
<li><a>Текст и шрифт</a></li>
10
</ul></li>
10
</ul></li>
11
<li><a>Класс GameObject</a></li>
11
<li><a>Класс GameObject</a></li>
12
<li><a>Класс Game</a></li>
12
<li><a>Класс Game</a></li>
13
<li><a>Готовые проекты - наглядные примеры</a></li>
13
<li><a>Готовые проекты - наглядные примеры</a></li>
14
</ul><p>Создание игр - перспективное направление разработки, которое стремительно развивается в 21 веке. Для того, чтобы программировать развлекательные продукты, нужно для начала выбрать специализированный язык, а затем изучить его особенности и инструменты. Небольшие проекты можно сделать и на Python.</p>
14
</ul><p>Создание игр - перспективное направление разработки, которое стремительно развивается в 21 веке. Для того, чтобы программировать развлекательные продукты, нужно для начала выбрать специализированный язык, а затем изучить его особенности и инструменты. Небольшие проекты можно сделать и на Python.</p>
15
<p>Статья расскажет о том, какие преимущества и недостатки имеет соответствующий язык разработки, а также познакомит с Pygame - одним из мощнейших инструментов при создании the game. Также будут изучены уже написанные проекты.</p>
15
<p>Статья расскажет о том, какие преимущества и недостатки имеет соответствующий язык разработки, а также познакомит с Pygame - одним из мощнейших инструментов при создании the game. Также будут изучены уже написанные проекты.</p>
16
<h2>Определение</h2>
16
<h2>Определение</h2>
17
<p>Python - высокоуровневый<a>язык программирования</a>общего назначения. Используется для создания самых разных приложений: от игровых до бизнес-программ. Поддерживает концепции объектно-ориентированной разработки.</p>
17
<p>Python - высокоуровневый<a>язык программирования</a>общего назначения. Используется для создания самых разных приложений: от игровых до бизнес-программ. Поддерживает концепции объектно-ориентированной разработки.</p>
18
<p>Python - язык с динамической типизацией данных. Он является достаточно простым для изучения, благодаря чему его активно используют новички. The first game написать на Python будет не слишком трудно даже с минимальными знаниями.</p>
18
<p>Python - язык с динамической типизацией данных. Он является достаточно простым для изучения, благодаря чему его активно используют новички. The first game написать на Python будет не слишком трудно даже с минимальными знаниями.</p>
19
<h3>Плюсы</h3>
19
<h3>Плюсы</h3>
20
<p><a>Python является языком</a>разработки со следующими преимуществами:</p>
20
<p><a>Python является языком</a>разработки со следующими преимуществами:</p>
21
<ul><li>стабильное функционирование;</li>
21
<ul><li>стабильное функционирование;</li>
22
<li>читабельный и простой код;</li>
22
<li>читабельный и простой код;</li>
23
<li>элементарный синтаксис, в основе которого лежит язык ABC;</li>
23
<li>элементарный синтаксис, в основе которого лежит язык ABC;</li>
24
<li>универсальность - одинакового подходит как для the business apps, так и для игр;</li>
24
<li>универсальность - одинакового подходит как для the business apps, так и для игр;</li>
25
<li>в небольших приложениях работает достаточно быстро;</li>
25
<li>в небольших приложениях работает достаточно быстро;</li>
26
<li>наличие динамической<a>типизации</a>.</li>
26
<li>наличие динамической<a>типизации</a>.</li>
27
</ul><p>У The Python имеется обширный спектр фреймворков, а также встроенных инструментов и библиотек. Все это помогает with the game programming.</p>
27
</ul><p>У The Python имеется обширный спектр фреймворков, а также встроенных инструментов и библиотек. Все это помогает with the game programming.</p>
28
<h3>Минусы</h3>
28
<h3>Минусы</h3>
29
<p>Недостатков у Питона не очень много. К ним относят:</p>
29
<p>Недостатков у Питона не очень много. К ним относят:</p>
30
<ul><li>отсутствие строгой типизации;</li>
30
<ul><li>отсутствие строгой типизации;</li>
31
<li>итоговый объем получившегося приложения.</li>
31
<li>итоговый объем получившегося приложения.</li>
32
</ul><p>Из-за "веса" получаемые games can be slowly. Приложения рискую медленно работать, а также сильно нагружать операционную систему устройства. Именно поэтому for the game programming Питон используется тогда, когда речь идет о не самых крупных проектах.</p>
32
</ul><p>Из-за "веса" получаемые games can be slowly. Приложения рискую медленно работать, а также сильно нагружать операционную систему устройства. Именно поэтому for the game programming Питон используется тогда, когда речь идет о не самых крупных проектах.</p>
33
<h2>Игровой цикл</h2>
33
<h2>Игровой цикл</h2>
34
<p>Игровой<a>цикл</a>- это объект, который заставляет программный код загружаться из раза в раз. В игре им выступает кадр. В нем может происходить множество действий. Они разделяются на несколько категорий:</p>
34
<p>Игровой<a>цикл</a>- это объект, который заставляет программный код загружаться из раза в раз. В игре им выступает кадр. В нем может происходить множество действий. Они разделяются на несколько категорий:</p>
35
<ol><li>Ввод данных. Производится со стороны непосредственного пользователя.</li>
35
<ol><li>Ввод данных. Производится со стороны непосредственного пользователя.</li>
36
<li>Обновление кадра.</li>
36
<li>Обновление кадра.</li>
37
<li>Визуализация. Эта операция отвечает за вывод изображения на экран. В процессе производится отрисовка элементов там, где они должны были располагаться по первоначальной задумке. </li>
37
<li>Визуализация. Эта операция отвечает за вывод изображения на экран. В процессе производится отрисовка элементов там, где они должны были располагаться по первоначальной задумке. </li>
38
</ol><p>In the big projects появляется искусственный интеллект и физика. Для создания полноценной игры нужно разобраться с воспроизведением звуков и музыки. Иногда в ней предусматривается набор очков, повышение уровня, а также индикаторы жизни.</p>
38
</ol><p>In the big projects появляется искусственный интеллект и физика. Для создания полноценной игры нужно разобраться с воспроизведением звуков и музыки. Иногда в ней предусматривается набор очков, повышение уровня, а также индикаторы жизни.</p>
39
<p>The Pygame - мощный инструмент разработчика развлекательного программного обеспечения. Фреймворк (библиотека), совместимая с<a>Python 3</a>.0. Данный модуль вышел в 2000 году и стремительно развивался. Его поддержка производится по сей день.</p>
39
<p>The Pygame - мощный инструмент разработчика развлекательного программного обеспечения. Фреймворк (библиотека), совместимая с<a>Python 3</a>.0. Данный модуль вышел в 2000 году и стремительно развивался. Его поддержка производится по сей день.</p>
40
<p>Игры, созданные при помощи the Pygame - это масштабируемые проекты. Они одинаково хорошо запускаются on the mobile и ПК.</p>
40
<p>Игры, созданные при помощи the Pygame - это масштабируемые проекты. Они одинаково хорошо запускаются on the mobile и ПК.</p>
41
<p>Модуль Pygame:</p>
41
<p>Модуль Pygame:</p>
42
<ul><li>является кроссплатформенным;</li>
42
<ul><li>является кроссплатформенным;</li>
43
<li>обладает открытым исходным кодом;</li>
43
<li>обладает открытым исходным кодом;</li>
44
<li>достаточно прост в изучении;</li>
44
<li>достаточно прост в изучении;</li>
45
<li>имеет неплохую поддержку;</li>
45
<li>имеет неплохую поддержку;</li>
46
<li>обладает зрелой library.</li>
46
<li>обладает зрелой library.</li>
47
</ul><p>Найти tutorial of the Pygame не составит особого труда - в сети полно документации (documents) и видео-гайдов. Данный модуль является обязательным для изучения всеми, кто планирует писать игры на Питоне. Это его ключевое предназначение.</p>
47
</ul><p>Найти tutorial of the Pygame не составит особого труда - в сети полно документации (documents) и видео-гайдов. Данный модуль является обязательным для изучения всеми, кто планирует писать игры на Питоне. Это его ключевое предназначение.</p>
48
<p>Pygame Platform - это платформа, которая используется при разработке мультимедийных приложений с графическим интерфейсом.</p>
48
<p>Pygame Platform - это платформа, которая используется при разработке мультимедийных приложений с графическим интерфейсом.</p>
49
<h3>Начало работы</h3>
49
<h3>Начало работы</h3>
50
<p>Для того, чтобы использовать данный модуль, его нужно сначала инициализировать. Скачивается библиотека с сервиса pygame org. Здесь же можно найти documentation and tutorials по рассматриваемой "платформе".</p>
50
<p>Для того, чтобы использовать данный модуль, его нужно сначала инициализировать. Скачивается библиотека с сервиса pygame org. Здесь же можно найти documentation and tutorials по рассматриваемой "платформе".</p>
51
<p>Перед созданием проекта потребуется:</p>
51
<p>Перед созданием проекта потребуется:</p>
52
<ol><li>Изучить основы программирования to the Python language.</li>
52
<ol><li>Изучить основы программирования to the Python language.</li>
53
<li>Использовать команду pip install pygame. Она отвечает за инициализацию.</li>
53
<li>Использовать команду pip install pygame. Она отвечает за инициализацию.</li>
54
</ol><p>Теперь можно формировать проект и редактировать его.</p>
54
</ol><p>Теперь можно формировать проект и редактировать его.</p>
55
<h3>Пример приложения</h3>
55
<h3>Пример приложения</h3>
56
<p>Pygame Platform - инструмент, помогающий создавать не только простые приложения, но и достаточно крупные игры. Вот элементарный пример кода:</p>
56
<p>Pygame Platform - инструмент, помогающий создавать не только простые приложения, но и достаточно крупные игры. Вот элементарный пример кода:</p>
57
<p><strong>import</strong><strong>pygame</strong></p>
57
<p><strong>import</strong><strong>pygame</strong></p>
58
<p><strong>import</strong><strong>sys</strong></p>
58
<p><strong>import</strong><strong>sys</strong></p>
59
<p>pygame.init()</p>
59
<p>pygame.init()</p>
60
<p>screen = pygame.display.set_mode((1200, 800))</p>
60
<p>screen = pygame.display.set_mode((1200, 800))</p>
61
<p><strong>while</strong><strong>True</strong>:</p>
61
<p><strong>while</strong><strong>True</strong>:</p>
62
<p> <strong>for</strong>event<strong>in</strong>pygame.event.get():</p>
62
<p> <strong>for</strong>event<strong>in</strong>pygame.event.get():</p>
63
<p> <strong>if</strong>event.type == pygame.QUIT:</p>
63
<p> <strong>if</strong>event.type == pygame.QUIT:</p>
64
<p> pygame.quit()</p>
64
<p> pygame.quit()</p>
65
<p> sys.exit()</p>
65
<p> sys.exit()</p>
66
<p>Здесь:</p>
66
<p>Здесь:</p>
67
<ul><li>import pygame отвечает за импорт libraries, включенный to the module;</li>
67
<ul><li>import pygame отвечает за импорт libraries, включенный to the module;</li>
68
<li>init() используется для подготовки модулей к работе;</li>
68
<li>init() используется для подготовки модулей к работе;</li>
69
<li>screen отвечает за создание графического окна, передав в set_mode() разрешение в качестве парный цифр;</li>
69
<li>screen отвечает за создание графического окна, передав в set_mode() разрешение в качестве парный цифр;</li>
70
<li>while True - основной цикл, перехватывающий событие закрытия основного графического окна посетителем.</li>
70
<li>while True - основной цикл, перехватывающий событие закрытия основного графического окна посетителем.</li>
71
</ul><p>После наступления желаемого события происходит завершение работы с библиотекой при помощи функции quit. Exit() отвечает за прекращение использования всего итогового приложения.</p>
71
</ul><p>После наступления желаемого события происходит завершение работы с библиотекой при помощи функции quit. Exit() отвечает за прекращение использования всего итогового приложения.</p>
72
<h3>Рисование фигур</h3>
72
<h3>Рисование фигур</h3>
73
<p>While running Pygame Platform, разработчикам может потребуется изображение геометрических фигур. Прямоугольные объекты представлены типом Rect:</p>
73
<p>While running Pygame Platform, разработчикам может потребуется изображение геометрических фигур. Прямоугольные объекты представлены типом Rect:</p>
74
<p>Создать объект соответствующего типа in the program легко - нужно указать координаты левого верхнего угла прямоугольника, а также длины его сторон:</p>
74
<p>Создать объект соответствующего типа in the program легко - нужно указать координаты левого верхнего угла прямоугольника, а также длины его сторон:</p>
75
<p>Здесь стоит обратить внимание на то, что начало координат расположено in the left corner окна, сверху. В изучаемой библиотеке функции отображения геометрических фигур расположены в модуле под названием draw.</p>
75
<p>Здесь стоит обратить внимание на то, что начало координат расположено in the left corner окна, сверху. В изучаемой библиотеке функции отображения геометрических фигур расположены в модуле под названием draw.</p>
76
<p>Изначально все графические объекты, которые хочется разместить на основном экране, сначала попадают в специальный буфер of the platform. Отображение изменений производится при помощи функции flip.</p>
76
<p>Изначально все графические объекты, которые хочется разместить на основном экране, сначала попадают в специальный буфер of the platform. Отображение изменений производится при помощи функции flip.</p>
77
<p>Любой tutorial расскажет о функциях рисования графических фигур:</p>
77
<p>Любой tutorial расскажет о функциях рисования графических фигур:</p>
78
<ol><li>Line. Позволяет рисовать линию на поверхности с заданным цветом и началом. Также предусматривается конец в точке end_pos и возможность указания толщины линии.</li>
78
<ol><li>Line. Позволяет рисовать линию на поверхности с заданным цветом и началом. Также предусматривается конец в точке end_pos и возможность указания толщины линии.</li>
79
<li>Lines. Рисует линию, которая соединяет точки последовательности. Каждая из них представлена в приложении координатной парой. Если третий параметр (closed) - это true, конечная точка будет соединена с начальной.</li>
79
<li>Lines. Рисует линию, которая соединяет точки последовательности. Каждая из них представлена в приложении координатной парой. Если третий параметр (closed) - это true, конечная точка будет соединена с начальной.</li>
80
<li>Circle. Точка pos здесь - это центр. Если толщина линии будет равна нулю, окружность закрасится.</li>
80
<li>Circle. Точка pos здесь - это центр. Если толщина линии будет равна нулю, окружность закрасится.</li>
81
<li>Ellipse. Функция, которую уроки по рассматриваемому модулю описывают как возможность нарисовать эллипс, ограниченный прямоугольником Rect. Если толщина линии равняется нулю, фигура будет закрашена.</li>
81
<li>Ellipse. Функция, которую уроки по рассматриваемому модулю описывают как возможность нарисовать эллипс, ограниченный прямоугольником Rect. Если толщина линии равняется нулю, фигура будет закрашена.</li>
82
</ol><p>Еще один вариант, который поддерживает библиотека Pygame - это рисование полигонов. Обозначается как polygon. Это - последовательность pointlist на заданной поверхности выбранного цвета. Каждая точка - это пара координат. Если width равен нулю, получившийся многоугольник будет закрашен.</p>
82
</ol><p>Еще один вариант, который поддерживает библиотека Pygame - это рисование полигонов. Обозначается как polygon. Это - последовательность pointlist на заданной поверхности выбранного цвета. Каждая точка - это пара координат. Если width равен нулю, получившийся многоугольник будет закрашен.</p>
83
<h3>Цвета</h3>
83
<h3>Цвета</h3>
84
<p>Цвета в модуле представлены моделью RGB. Посмотреть ее можно на Wikipedia org. Значение данного параметра задается в рамках диапазона от 0 до 255 включительно. Первая характеристика указывает на количество красного, вторая - зеленого, третья - голубого. Чем меньше значение, тем более темным окажется оттенок.</p>
84
<p>Цвета в модуле представлены моделью RGB. Посмотреть ее можно на Wikipedia org. Значение данного параметра задается в рамках диапазона от 0 до 255 включительно. Первая характеристика указывает на количество красного, вторая - зеленого, третья - голубого. Чем меньше значение, тем более темным окажется оттенок.</p>
85
<p>Вот несколько примеров, которые используют различные platforms:</p>
85
<p>Вот несколько примеров, которые используют различные platforms:</p>
86
<ul><li>белый - (255, 255, 255);</li>
86
<ul><li>белый - (255, 255, 255);</li>
87
<li>красный - (255, 0, 0);</li>
87
<li>красный - (255, 0, 0);</li>
88
<li>черный - (0, 0, 0).</li>
88
<li>черный - (0, 0, 0).</li>
89
</ul><p>Любой tutorial по Pygame в Python укажет на то, что модуль color включает в себя словарь - THECOLORS.</p>
89
</ul><p>Любой tutorial по Pygame в Python укажет на то, что модуль color включает в себя словарь - THECOLORS.</p>
90
<p>Его ключи - это названия разных цветовых гамм. Подключается он при помощи команды, представленной выше.</p>
90
<p>Его ключи - это названия разных цветовых гамм. Подключается он при помощи команды, представленной выше.</p>
91
<h3>Текст и шрифт</h3>
91
<h3>Текст и шрифт</h3>
92
<p>Pygame documentation на сайте Питона org содержит данные о работе с текстом и шрифтами. Последние - это группы символов, которые объединены по стилистическому или иному признаку. Шрифты в библиотеке представлены типом под названием Font.</p>
92
<p>Pygame documentation на сайте Питона org содержит данные о работе с текстом и шрифтами. Последние - это группы символов, которые объединены по стилистическому или иному признаку. Шрифты в библиотеке представлены типом под названием Font.</p>
93
<p>Для того, чтобы создать объект Font на основе уже имеющегося шрифта в системе, нужно вызвать функцию:</p>
93
<p>Для того, чтобы создать объект Font на основе уже имеющегося шрифта в системе, нужно вызвать функцию:</p>
94
<p>Здесь:</p>
94
<p>Здесь:</p>
95
<ul><li>параметр name отвечает за передачу функции имени шрифта;</li>
95
<ul><li>параметр name отвечает за передачу функции имени шрифта;</li>
96
<li>size - это размер "символов" в пунктах;</li>
96
<li>size - это размер "символов" в пунктах;</li>
97
<li>bold и italic - особенности начертания.</li>
97
<li>bold и italic - особенности начертания.</li>
98
</ul><p>Списки уже имеющихся шрифтов в системе удается получить при помощи команды get_fonts():</p>
98
</ul><p>Списки уже имеющихся шрифтов в системе удается получить при помощи команды get_fonts():</p>
99
<p>Теперь при помощи метода render для объекта Font нужно получить изображение с текстом. Последний передается методу built() для отрисовки на основном дисплее устройства:</p>
99
<p>Теперь при помощи метода render для объекта Font нужно получить изображение с текстом. Последний передается методу built() для отрисовки на основном дисплее устройства:</p>
100
<p>Тест при обработке соответствующего кода будет располагаться по координатам (50, 50).</p>
100
<p>Тест при обработке соответствующего кода будет располагаться по координатам (50, 50).</p>
101
<h2>Класс GameObject</h2>
101
<h2>Класс GameObject</h2>
102
<p>В официальной documentation рассматриваемого модуля выделяется объект GameObject. Он представлен визуальным элементом, который знает, как рендерить самого себя. Позволяет хранить границы и перемещаться. С аналогичными возможностями на изучаемой платформе есть класс Sprite. Новичкам он не нужен.</p>
102
<p>В официальной documentation рассматриваемого модуля выделяется объект GameObject. Он представлен визуальным элементом, который знает, как рендерить самого себя. Позволяет хранить границы и перемещаться. С аналогичными возможностями на изучаемой платформе есть класс Sprite. Новичкам он не нужен.</p>
103
<p>Этот код работает так:</p>
103
<p>Этот код работает так:</p>
104
<ol><li>GameObject согласно tutorial document используется в виде базового класса других объектов в играх.</li>
104
<ol><li>GameObject согласно tutorial document используется в виде базового класса других объектов в играх.</li>
105
<li>Отвечает за разнообразие свойств прямоугольника.</li>
105
<li>Отвечает за разнообразие свойств прямоугольника.</li>
106
<li>Метод update() перемещает объект с установленной (текущей) скоростью.</li>
106
<li>Метод update() перемещает объект с установленной (текущей) скоростью.</li>
107
<li>Метод draw() должен определяется подклассами. Он ничего не предпринимает в программном коде.</li>
107
<li>Метод draw() должен определяется подклассами. Он ничего не предпринимает в программном коде.</li>
108
</ol><p>Для создания собственной игры через "Пигейм"также потребуется знать the class Game.</p>
108
</ol><p>Для создания собственной игры через "Пигейм"также потребуется знать the class Game.</p>
109
<h2>Класс Game</h2>
109
<h2>Класс Game</h2>
110
<p>Это - игровое ядро. Оно выполняется в основном цикле. Наделен полезными инструментами. Обладает такими методами:</p>
110
<p>Это - игровое ядро. Оно выполняется в основном цикле. Наделен полезными инструментами. Обладает такими методами:</p>
111
<ol><li>Init. Используется за инициализацию Pygame, шрифтов, а также микшера звуков. Three вызова нужны, чтобы задействовать в исходном коде только нужные элементы, а также держать подсистемы под контролем. С его помощью создаются фоны, основная поверхность и таймер с поддержкой отображения частоты кадров.</li>
111
<ol><li>Init. Используется за инициализацию Pygame, шрифтов, а также микшера звуков. Three вызова нужны, чтобы задействовать в исходном коде только нужные элементы, а также держать подсистемы под контролем. С его помощью создаются фоны, основная поверхность и таймер с поддержкой отображения частоты кадров.</li>
112
<li>Update и draw. Вызывают соответствующие методы. При наложении объектов на дисплее, порядок списка объектов будет определять, что рендерится изначально.</li>
112
<li>Update и draw. Вызывают соответствующие методы. При наложении объектов на дисплее, порядок списка объектов будет определять, что рендерится изначально.</li>
113
<li>Handle_events(). Метод, за счет которого прослушиваются генерируемые события. Сюда можно отнести нажатие на кнопки мыши, а также события клавиш. Каждое действие вызывает все функции-обработки, которые проходят обработку событий.</li>
113
<li>Handle_events(). Метод, за счет которого прослушиваются генерируемые события. Сюда можно отнести нажатие на кнопки мыши, а также события клавиш. Каждое действие вызывает все функции-обработки, которые проходят обработку событий.</li>
114
</ol><p>Также используется метод run(). Он отвечает за работоспособность основного цикла. Используется до получения в значении game_over итога "ложь".</p>
114
</ol><p>Также используется метод run(). Он отвечает за работоспособность основного цикла. Используется до получения в значении game_over итога "ложь".</p>
115
<h2>Готовые проекты - наглядные примеры</h2>
115
<h2>Готовые проекты - наглядные примеры</h2>
116
<p>При помощи Pygame Python создаются довольно крупные проекты. Сейчас самыми известными среди них являются:</p>
116
<p>При помощи Pygame Python создаются довольно крупные проекты. Сейчас самыми известными среди них являются:</p>
117
<ul><li>EVE Online;</li>
117
<ul><li>EVE Online;</li>
118
<li>Battlefield;</li>
118
<li>Battlefield;</li>
119
<li>Mount and Blade;</li>
119
<li>Mount and Blade;</li>
120
<li>Civilization 4.</li>
120
<li>Civilization 4.</li>
121
</ul><p>Начать работу с упомянутым модулем можно, посмотрев<a>эти уроки</a>. А можно закончить специализированные дистанционные компьютерные курсы.</p>
121
</ul><p>Начать работу с упомянутым модулем можно, посмотрев<a>эти уроки</a>. А можно закончить специализированные дистанционные компьютерные курсы.</p>
122
<a></a>
122
<a></a>