> For the complete documentation index, see [llms.txt](https://pygame.gitbook.io/razrabotchiki/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://pygame.gitbook.io/razrabotchiki/vvedenie/vvedenie-v-pygame.md).

# Введение в Pygame

## Что такое Pygame?

&#x20;   Pygame — это библиотека для разработки компьютерных игр на языке программирования Python.

&#x20;   Другими словами - это "набор" инструментов, помогающих программистам создавать игры.

**Как ты думаешь, что есть в этом "наборе"?**

* [x] Графика и анимация
* [x] Музыка и звук
* [x] Управление

**Действительно в наборе обычно содержатся:**

* Графика и анимация: То есть всё, что нужно, чтобы добавлять красивые картинки и заставлять их двигаться на экране.
* Музыка и звук: С помощью этого инструмента можно добавлять звуки и музыку, чтобы игра стала еще интереснее.
* Управление: Это означает, что можно сделать так, чтобы игрок мог управлять игрой с помощью мыши, клавиатуры или даже геймпада.

<figure><img src="https://lh7-us.googleusercontent.com/docsz/AD_4nXczKVQz1n538uOsnbYYUpDrW2dAsqEjpq4p0RgBQCcAGVgN1v4vBmXSlXjVvBjlmhvg6wCJOipCDO0Ii-fpTpZF8PC7sHtzqaiGIg5i-tFWcZWiAe7vAVeeQW6pOSflxIV2I7AVi39kN6qyTjM1E76lIfY?key=3o4T_CSRbUO04jFBLML2jw" alt=""><figcaption></figcaption></figure>

### Игровой цикл

В сердце каждой игры лежит цикл, который принято называть «игровым циклом». Он запускается снова и снова, делая все, чтобы работала игра. Каждый повтор в игре называется кадром.

Ниже приведен пример с 3-мя кадрами

<figure><img src="https://lh7-us.googleusercontent.com/docsz/AD_4nXcOeaI0ExK40BC-ChCm2iaaHeJFDcV3v8NKfGNCKHHQWrgNUhH_PYAZ8GIyGig8wR7vq4LIuAyXdtXhe035RGaoWh9jDnTUo6qRskz6Dbxnvz5AIEGqnafTYhj-Ge626QVU4cVeC3szodNok1Mm3XnC0Le0?key=3o4T_CSRbUO04jFBLML2jw" alt=""><figcaption></figcaption></figure>

В каждом кадре происходит масса вещей, но их можно разбить на три категории:

1. Обработка ввода (события): Речь идет обо всем, что происходит вне игры — тех событиях, на которые она должна реагировать. Это могут быть нажатия клавиш на клавиатуре, клики мышью и так далее.\
   ![](https://lh7-us.googleusercontent.com/docsz/AD_4nXflKoofmd4ACDgfWngz-KLAtTf4e7jtcfs6f6ZWdZe4CO0wHYOZ2bUi-I5DyliQeOtGioylV-RGkHVm8LeQa2t-6NPLHh2cbtO1JiZCuTfhheT8WAdgFAKI3KtDfilsBQcTGHvBv1qnQK4gbVOR4rs6dh-0?key=3o4T_CSRbUO04jFBLML2jw)\ <br>
2. Обновление игры: Изменение всего, что должно измениться в течение одного кадра. Если персонаж в воздухе, гравитация должна потянуть его вниз.\
   ![](https://lh7-us.googleusercontent.com/docsz/AD_4nXcvEUfmbBvIdGFz3RLwBFda9be60W5VIf9MG93Lojv0HUcxkUILFEhD29lcUo4AC3AXZro2Axhop2m1ortl5WKUPmPziLozin7PBdPnWPHyPW3DN5OkHykRkz3qz2u79EJ3rriFr2f15vn9KxY3vFWZBxv9?key=3o4T_CSRbUO04jFBLML2jw)\ <br>
3. Рендеринг (прорисовка): В этом шаге все выводится на экран: фоны, персонажи, меню. Все, что игрок должен видеть, появляется на экране в нужном месте.\
   ![](https://lh7-us.googleusercontent.com/docsz/AD_4nXcVpJoZEv0e1zespeo5Kn15TruBNrfZu8lCBqgJWFnj9__ameNQkcZgBodFgZDficHG58UNWfgMBMJGNnPJe9LZ6MkMMJjSv9ntXSwltNCVwViViWRVMhyj2G362XIRRRinYDJY6-VYNNyrlfGa-j6Bxw0h?key=3o4T_CSRbUO04jFBLML2jw)\ <br>

Время: Еще один важный аспект игрового цикла — скорость его работы.

Давай представим, что игра - это книга с картинками, которая перелистывается очень быстро.

Если за 1 секунду поместиться 60 страниц, то картинки перемещаются очень быстро, и игра выглядит очень плавно.

Но если за 1 секунду поместиться 16 картинок, то картинки двигаются медленно, и игра кажется не очень быстрой.

![](https://lh7-us.googleusercontent.com/docsz/AD_4nXeVO5qGWhNsqaHp7vnTbgL_DYPLZIS_xh7oOnFqujQX9GKhmUHhpoJd63NZaovcPLPhXPLNuigA50B5lrwoZACFNVBYH2Ou2wIhivtHIyMPKVM5rcrdNaESR5O6m_qoEDIXtK3dR69QyzRSbo8rghuV3x8k?key=3o4T_CSRbUO04jFBLML2jw)

Многие наверняка знакомы с термином FPS, который расшифровывается как Frames Per Second (или кадры в секунду). Он указывает на то, сколько раз цикл должен повториться за одну секунду. Это важно, чтобы игра не была слишком медленной или быстрой. Важно и то, чтобы игра не работала с разной скоростью на разных ПК. Если персонажу необходимо 10 секунд на то, чтобы пересечь экран, эти 10 секунд должны быть неизменными для всех компьютеров.
