HTML Diff
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>