# [![Downloads](https://static.pepy.tech/personalized-badge/pyxel?period=total&units=international_system&left_color=grey&right_color=blue&left_text=PyPI%20downloads)](https://pypi.org/project/pyxel/) [![GitHub Repo stars](https://img.shields.io/github/stars/kitao/pyxel?style=social)](https://github.com/kitao/pyxel) [![GitHub forks](https://img.shields.io/github/forks/kitao/pyxel?style=social)](https://github.com/kitao/pyxel) [![GitHub Sponsors](https://img.shields.io/github/sponsors/kitao?label=Sponsor%20me&logo=github%20sponsors&style=social)](https://github.com/sponsors/kitao) [![ko-fi](https://ko-fi.com/img/githubbutton_sm.svg)](https://ko-fi.com/H2H27VDKD) [ [English](../README.md) | [中文](README.cn.md) | [Deutsch](README.de.md) | [Español](README.es.md) | [Français](README.fr.md) | [Italiano](README.it.md) | [日本語](README.ja.md) | [한국어](README.ko.md) | [Português](README.pt.md) | [Русский](README.ru.md) | [Türkçe](README.tr.md) | [Українська](README.uk.md) ] **Pyxel** (/ˈpɪksəl/) — это ретро-игровой движок для Python. Спецификации вдохновлены ретро-игровыми консолями, такими как поддержка только 16 цветов и 4 звуковых канала, что позволяет легко наслаждаться созданием игр в стиле пиксельной графики. [](https://github.com/kitao/pyxel/wiki/Pyxel-User-Examples) [](https://gihyo.jp/book/2025/978-4-297-14657-3) Разработка Pyxel осуществляется на основе отзывов пользователей. Пожалуйста, поставьте Pyxel звезду на GitHub!

Спецификации и API Pyxel вдохновлены [PICO-8](https://www.lexaloffle.com/pico-8.php) и [TIC-80](https://tic80.com/). Pyxel является открытым программным обеспечением под [MIT лицензией](../LICENSE) и бесплатен для использования. Давайте начнем создавать ретро-игры с Pyxel! ## Спецификации - Работает на Windows, Mac, Linux и Web - Программирование на Python - Настраиваемый размер экрана - 16-цветная палитра - 3 банка изображений 256x256 - 8 тайловых карт 256x256 - 4 канала с 64 настраиваемыми звуками - 8 музыкальных треков, способных сочетать любые звуки - Ввод с клавиатуры, мыши и игрового контроллера - Инструменты для редактирования изображений и звуков - Расширяемые пользователем цвета, каналы и банки ### Цветовая палитра ## Как установить ### Windows После установки [Python3](https://www.python.org/) (версии 3.8 или выше), выполните следующую команду: ```sh pip install -U pyxel ``` При установке Python с помощью официального установщика убедитесь, что вы отметили опцию `Add Python 3.x to PATH`, чтобы активировать команду `pyxel`. ### Mac После установки [Homebrew](https://brew.sh/) выполните следующие команды: ```sh brew install pipx pipx ensurepath pipx install pyxel ``` Чтобы обновить Pyxel после установки, выполните `pipx upgrade pyxel`. ### Linux После установки пакета SDL2 (`libsdl2-dev` для Ubuntu), [Python3](https://www.python.org/) (версии 3.8 или выше) и `python3-pip` выполните следующую команду: ```sh sudo pip3 install -U pyxel ``` Если предыдущая команда не сработала, подумайте о сборке Pyxel из исходного кода, следуя инструкциям в [Makefile](../Makefile). ### Web Веб-версия Pyxel работает на ПК, смартфонах и планшетах с совместимым браузером, без установки Python или Pyxel. Самый простой способ использовать её — через онлайн-IDE [Pyxel Code Maker](https://kitao.github.io/pyxel/wasm/code-maker/). Для других моделей использования, таких как встраивание приложений Pyxel на ваш собственный сайт, обратитесь к [этой странице](pyxel-web-en.md). ### Запуск примеров После установки Pyxel вы можете скопировать примеры в текущую директорию с помощью следующей команды: ```sh pyxel copy_examples ``` Следующие примеры будут скопированы в текущую директорию:
01_hello_pyxel.py Самое простое приложение Демонстрация Код
02_jump_game.py Игра с прыжками с использованием файла ресурсов Pyxel Демонстрация Код
03_draw_api.py Демонстрация API для рисования Демонстрация Код
04_sound_api.py Демонстрация API для звука Демонстрация Код
05_color_palette.py Список цветовых палитр Демонстрация Код
06_click_game.py Игра на клик мыши Демонстрация Код
07_snake.py Игра «Змейка» с BGM Демонстрация Код
08_triangle_api.py Демонстрация API для рисования треугольников Демонстрация Код
09_shooter.py Shoot'em up с переходами между экранами и MML Демонстрация Код
10_platformer.py Горизонтальная платформенная игра с картой Демонстрация Код
11_offscreen.py Отрисовка вне экрана с классом Image Демонстрация Код
12_perlin_noise.py Анимация Перлин-шума Демонстрация Код
13_bitmap_font.py Рисование битмап-шрифта Демонстрация Код
14_synthesizer.py Синтезатор с использованием расширенных функций аудио Демонстрация Код
15_tiled_map_file.py Загрузка и отрисовка Tiled Map File (.tmx) Демонстрация Код
16_transform.py Поворот и масштабирование изображений Демонстрация Код
17_app_launcher.py Запускатель приложений Pyxel (вы можете играть в различные игры!) Демонстрация Код
99_flip_animation.py Анимация с помощью функции `flip` (только для не веб-платформ) Демонстрация Код
Примеры можно выполнить с помощью следующих команд: ```sh # Run example in examples directory cd pyxel_examples pyxel run 01_hello_pyxel.py # Run app in examples/apps directory cd apps pyxel play 30sec_of_daylight.pyxapp ``` ## Как использовать ### Создание приложения В вашем Python-скрипте импортируйте Pyxel, укажите размер окна с помощью `init` и запустите приложение с помощью `run`. ```python import pyxel pyxel.init(160, 120) def update(): if pyxel.btnp(pyxel.KEY_Q): pyxel.quit() def draw(): pyxel.cls(0) pyxel.rect(10, 10, 20, 20, 11) pyxel.run(update, draw) ``` Аргументы функции `run` — это функция `update`, которая обрабатывает обновления кадров, и функция `draw`, которая отвечает за отрисовку на экране. В реальном приложении рекомендуется обернуть код Pyxel в класс, как показано ниже: ```python import pyxel class App: def __init__(self): pyxel.init(160, 120) self.x = 0 pyxel.run(self.update, self.draw) def update(self): self.x = (self.x + 1) % pyxel.width def draw(self): pyxel.cls(0) pyxel.rect(self.x, 0, 8, 8, 9) App() ``` Для создания простых графиков без анимации вы можете использовать функцию `show`, чтобы упростить ваш код. ```python import pyxel pyxel.init(120, 120) pyxel.cls(1) pyxel.circb(60, 60, 40, 7) pyxel.show() ``` ### Запуск приложения Созданный скрипт можно выполнить с помощью команды `python`: ```sh python PYTHON_SCRIPT_FILE ``` Его также можно запустить с помощью команды `pyxel run`: ```sh pyxel run PYTHON_SCRIPT_FILE ``` Кроме того, команда `pyxel watch` отслеживает изменения в указанном каталоге и автоматически перезапускает программу при обнаружении изменений: ```sh pyxel watch WATCH_DIR PYTHON_SCRIPT_FILE ``` Остановите наблюдение за каталогом, нажав `Ctrl(Command)+C`. ### Специальные клавиши Во время выполнения приложения Pyxel можно выполнить следующие специальные действия с клавишами: - `Esc`
Выйти из приложения - `Alt(Option)+R` или `A+B+X+Y+BACK` на геймпаде
Сбросить приложение - `Alt(Option)+1`
Сохранить снимок экрана на рабочий стол - `Alt(Option)+2`
Сбросить время начала записи видео с экрана - `Alt(Option)+3`
Сохранить видео захвата экрана на рабочий стол (до 10 секунд) - `Alt(Option)+8` или `A+B+X+Y+DL` на геймпаде
Переключить масштаб экрана между максимальным и целочисленным - `Alt(Option)+9` или `A+B+X+Y+DR` на геймпаде
Переключить режим экрана (Crisp/Smooth/Retro) - `Alt(Option)+0` или `A+B+X+Y+DU` на геймпаде
Переключить монитор производительности (FPS/время `update`/время `draw`) - `Alt(Option)+Enter` или `A+B+X+Y+DD` на геймпаде
Переключить полноэкранный режим - `Shift+Alt(Option)+1/2/3`
Сохранить банк изображений 0, 1 или 2 на рабочий стол - `Shift+Alt(Option)+0`
Сохранить текущую цветовую палитру на рабочий стол ### Как создавать ресурсы Pyxel Editor позволяет создавать изображения и звуки для приложений Pyxel. Вы можете запустить Pyxel Editor с помощью следующей команды: ```sh pyxel edit PYXEL_RESOURCE_FILE ``` Если указанный файл ресурсов Pyxel (.pyxres) существует, он будет загружен. Если его нет, будет создан новый файл с указанным именем. Если файл ресурсов пропущен, будет создан новый файл с именем `my_resource.pyxres`. После запуска Pyxel Editor вы можете переключаться между файлами ресурсов, перетащив файл на редактор. Созданный файл ресурсов можно загрузить с помощью функции `load`. Pyxel Editor имеет следующие режимы редактирования. **Редактор изображений** Режим для редактирования изображений в каждом **банке изображений**. Вы можете перетаскивать и бросать файл изображения (PNG/GIF/JPEG) в редактор изображений, чтобы загрузить изображение в выбранный в данный момент банк изображений. **Редактор тайловых карт** Режим для редактирования **тайловых карт**, в которых изображения банков изображений располагаются в плиточном порядке. Перетащите файл TMX (Tiled Map File) в редактор тайловых карт, чтобы загрузить его слой 0 в текущую выбранную тайловую карту. **Редактор звуков** Режим редактирования **звуков**, используемых для мелодий и звуковых эффектов. **Редактор музыки** Режим для редактирования **музыкальных треков**, в которых звуки расположены в порядке воспроизведения. ### Другие методы создания ресурсов Изображения и тайловые карты Pyxel также можно создавать с помощью следующих методов: - Создавайте изображения или тайловые карты из списков строк с помощью функций `Image.set` или `Tilemap.set` - Загружайте файлы изображений, совместимые с палитрой Pyxel (PNG/GIF/JPEG), с помощью функции `Image.load` Звуки и музыка Pyxel также можно создать с помощью следующего метода: - Создавайте их из строк с помощью функций `Sound.set` или `Music.set` См. справочник API, чтобы узнать, как использовать эти функции. ### Как распространять приложения Pyxel поддерживает кроссплатформенный формат распространения под названием файл приложения Pyxel. Создайте файл приложения Pyxel (.pyxapp) с помощью команды `pyxel package`: ```sh pyxel package APP_DIR STARTUP_SCRIPT_FILE ``` Если вам нужно включить ресурсы или дополнительные модули, разместите их в каталоге приложения. Метаданные могут отображаться во время выполнения, если указать их в следующем формате в стартовом скрипте. Поля, кроме `title` и `author`, являются необязательными. ```python # title: Pyxel Platformer # author: Takashi Kitao # desc: A Pyxel platformer example # site: https://github.com/kitao/pyxel # license: MIT # version: 1.0 ``` Созданный файл приложения можно запустить с помощью команды `pyxel play`: ```sh pyxel play PYXEL_APP_FILE ``` Файл приложения Pyxel также можно преобразовать в исполняемый файл или HTML-файл командами `pyxel app2exe` или `pyxel app2html`. ## Справочник по API ### Система - `width`, `height`
Ширина и высота экрана - `frame_count`
Количество прошедших кадров - `init(width, height, [title], [fps], [quit_key], [display_scale], [capture_scale], [capture_sec])`
Инициализация приложения Pyxel с размером экрана (`width`, `height`). Можно указать следующие параметры: заголовок окна с помощью `title`, частоту кадров с помощью `fps`, клавишу выхода из приложения с помощью `quit_key`, масштаб отображения с помощью `display_scale`, масштаб захвата экрана с помощью `capture_scale` и максимальное время записи видео захвата экрана с помощью `capture_sec`.
Пример: `pyxel.init(160, 120, title="My Pyxel App", fps=60, quit_key=pyxel.KEY_NONE, capture_scale=3, capture_sec=0)` - `run(update, draw)`
Запуск приложения Pyxel и вызов функции `update` для обновления кадров и функции `draw` для отрисовки. - `show()`
Отображение экрана и ожидание нажатия клавиши `Esc`. - `flip()`
Обновление экрана на один кадр. Приложение завершится при нажатии клавиши `Esc`. Эта функция недоступна в веб-версии. - `quit()`
Завершение работы приложения Pyxel. - `reset()`
Сбрасывает приложение Pyxel. Переменные окружения сохраняются после сброса. ### Ресурсы - `load(filename, [exclude_images], [exclude_tilemaps], [exclude_sounds], [exclude_musics])`
Загрузка файла ресурсов (.pyxres). Если опция установлена в `True`, соответствующий ресурс будет исключен из загрузки. Если файл палитры (.pyxpal) с таким же именем существует в той же директории, что и файл ресурсов, цвета палитры также будут обновлены. Файл палитры содержит шестнадцатеричные значения для цветов отображения (например, `1100ff`), разделенные новыми строками. Файл палитры также можно использовать для изменения цветов, отображаемых в Pyxel Editor. - `user_data_dir(vendor_name, app_name)`
Возвращает каталог для сохранения пользовательских данных, созданный на основе `vendor_name` и `app_name`. Если каталог не существует, он будет создан автоматически. Используется для сохранения рекордов, прогресса в игре и аналогичных данных.
Пример: `print(pyxel.user_data_dir("Takashi Kitao", "Pyxel Shooter"))` ### Ввод - `mouse_x`, `mouse_y`
Текущие координаты курсора мыши - `mouse_wheel`
Текущее значение колесика мыши - `btn(key)`
Возвращает `True`, если клавиша `key` нажата, иначе возвращает `False`. ([Список определений клавиш](../python/pyxel/__init__.pyi)) - `btnp(key, [hold], [repeat])`
Возвращает `True`, если клавиша `key` нажата в данном кадре, иначе возвращает `False`. Если указаны `hold` и `repeat`, то после удержания клавиши `key` в течение `hold` кадров или более, `True` будет возвращаться каждые `repeat` кадров. - `btnr(key)`
Возвращает `True`, если клавиша `key` была отпущена в данном кадре, иначе возвращает `False`. - `mouse(visible)`
Показывает курсор мыши, если `visible` равно `True`, и скрывает его, если `visible` равно `False`. Координаты курсора продолжают обновляться даже при его скрытии. ### Графика - `colors`
Список цветов палитры отображения. Цвет отображения задается 24-битным числовым значением. Используйте `colors.from_list` и `colors.to_list` для прямого назначения и извлечения списков Python.
Пример: `old_colors = pyxel.colors.to_list(); pyxel.colors.from_list([0x111111, 0x222222, 0x333333]); pyxel.colors[15] = 0x112233` - `images`
Список банков изображений (экземпляры класса Image) (0-2)
Пример: `pyxel.images[0].load(0, 0, "title.png")` - `tilemaps`
Список карт тайлов (экземпляры класса Tilemap) (0-7) - `clip(x, y, w, h)`
Устанавливает область рисования на экране от координат (`x`, `y`) с шириной `w` и высотой `h`. Вызов `clip()` сбрасывает область рисования на весь экран. - `camera(x, y)`
Изменяет координаты верхнего левого угла экрана на (`x`, `y`). Вызов `camera()` сбрасывает координаты верхнего левого угла на (`0`, `0`). - `pal(col1, col2)`
Заменяет цвет `col1` на `col2` при рисовании. Вызов `pal()` сбрасывает палитру к исходному состоянию. - `dither(alpha)`
Применяет дизеринг (псевдо-прозрачность) при рисовании. Установите значение `alpha` в диапазоне от `0.0` до `1.0`, где `0.0` — это прозрачность, а `1.0` — это непрозрачность. - `cls(col)`
Очищает экран цветом `col`. - `pget(x, y)`
Получает цвет пикселя в координатах (`x`, `y`). - `pset(x, y, col)`
Рисует пиксель цвета `col` в координатах (`x`, `y`). - `line(x1, y1, x2, y2, col)`
Рисует линию цвета `col` от координат (`x1`, `y1`) до (`x2`, `y2`). - `rect(x, y, w, h, col)`
Рисует прямоугольник шириной `w`, высотой `h` и цветом `col` от координат (`x`, `y`). - `rectb(x, y, w, h, col)`
Рисует контур прямоугольника шириной `w`, высотой `h` и цветом `col` от координат (`x`, `y`). - `circ(x, y, r, col)`
Рисует круг радиусом `r` и цветом `col` в координатах (`x`, `y`). - `circb(x, y, r, col)`
Рисует контур круга радиусом `r` и цветом `col` в координатах (`x`, `y`). - `elli(x, y, w, h, col)`
Рисует эллипс шириной `w`, высотой `h` и цветом `col` от координат (`x`, `y`). - `ellib(x, y, w, h, col)`
Рисует контур эллипса шириной `w`, высотой `h` и цветом `col` от координат (`x`, `y`). - `tri(x1, y1, x2, y2, x3, y3, col)`
Рисует треугольник с вершинами в координатах (`x1`, `y1`), (`x2`, `y2`), (`x3`, `y3`) и цветом `col`. - `trib(x1, y1, x2, y2, x3, y3, col)`
Рисует контур треугольника с вершинами в координатах (`x1`, `y1`), (`x2`, `y2`), (`x3`, `y3`) и цветом `col`. - `fill(x, y, col)`
Заполняет область, соединенную с таким же цветом, как и в координатах (`x`, `y`), цветом `col`. - `blt(x, y, img, u, v, w, h, [colkey], [rotate], [scale])`
Копирует регион размером (`w`, `h`) от координат (`u`, `v`) из банка изображений `img`(0-2) в координаты (`x`, `y`). Если задано отрицательное значение для `w` и/или `h`, регион будет перевернут по горизонтали и/или вертикали. Если указан `colkey`, он будет считаться прозрачным цветом. Если заданы `rotate` (в градусах), `scale` (1.0 = 100%) или оба параметра, будут применены соответствующие преобразования. - `bltm(x, y, tm, u, v, w, h, [colkey], [rotate], [scale])`
Копирует регион размером (`w`, `h`) от координат (`u`, `v`) из карты тайлов `tm`(0-7) в координаты (`x`, `y`). Если задано отрицательное значение для `w` и/или `h`, регион будет перевернут по горизонтали и/или вертикали. Если указан `colkey`, он будет считаться прозрачным цветом. Если заданы `rotate` (в градусах), `scale` (1.0 = 100%) или оба параметра, будут применены соответствующие преобразования. Размер одного тайла составляет 8x8 пикселей и хранится в карте тайлов в виде кортежа `(image_tx, image_ty)`. - `text(x, y, s, col)`
Рисует строку `s` цвета `col` в координатах (`x`, `y`). ### Аудио - `sounds`
Список звуков (экземпляры класса Sound) (0-63)
Пример: `pyxel.sounds[0].speed = 60` - `musics`
Список музыкальных треков (экземпляры класса Music) (0-7) - `play(ch, snd, [sec], [loop], [resume])`
Воспроизводит звук `snd`(0-63) на канале `ch`(0-3). `snd` может быть номером звука, списком номеров звуков или MML-строкой. Начальная позиция воспроизведения может быть указана в секундах с помощью параметра `sec`. Если параметр `loop` установлен в значение `True`, воспроизведение будет зациклено. Чтобы возобновить предыдущий звук после завершения воспроизведения, установите `resume` в значение `True`. - `playm(msc, [sec], [loop])`
Воспроизводит музыку `msc`(0-7). Начальная позиция воспроизведения может быть указана в секундах с помощью параметра `sec`. Если параметр `loop` установлен в значение `True`, музыка будет воспроизводиться в цикле. - `stop([ch])`
Останавливает воспроизведение на указанном канале `ch`(0-3). Вызов функции `stop()` останавливает воспроизведение на всех каналах. - `play_pos(ch)`
Возвращает текущую позицию воспроизведения звука на канале `ch`(0-3) в виде кортежа `(sound_no, sec)`. Возвращает `None`, если воспроизведение остановлено. ### Математика - `ceil(x)`
Возвращает наименьшее целое число, большее или равное `x`. - `floor(x)`
Возвращает наибольшее целое число, меньшее или равное `x`. - `sgn(x)`
Возвращает `1`, если `x` положительное, `0`, если равно `0`, и `-1`, если отрицательное. - `sqrt(x)`
Возвращает квадратный корень числа `x`. - `sin(deg)`
Возвращает синус угла в градусах `deg`. - `cos(deg)`
Возвращает косинус угла в градусах `deg`. - `atan2(y, x)`
Возвращает арктангенс отношения `y` к `x` в градусах. - `rseed(seed)`
Устанавливает значение семени для генератора случайных чисел. - `rndi(a, b)`
Возвращает случайное целое число от `a` до `b` включительно. - `rndf(a, b)`
Возвращает случайное вещественное число от `a` до `b` включительно. - `nseed(seed)`
Устанавливает значение семени для Perlin-шума. - `noise(x, [y], [z])`
Возвращает значение Perlin-шума для указанных координат. ### Класс Image - `width`, `height`
Ширина и высота изображения - `set(x, y, data)`
Устанавливает изображение в координатах (`x`, `y`) с использованием списка строк.
Пример: `pyxel.images[0].set(10, 10, ["0123", "4567", "89ab", "cdef"])` - `load(x, y, filename)`
Загружает файл изображения (PNG/GIF/JPEG) в координаты (`x`, `y`). - `pget(x, y)`
Получает цвет пикселя в координатах (`x`, `y`). - `pset(x, y, col)`
Рисует пиксель цвета `col` в координатах (`x`, `y`). ### Класс Tilemap - `width`, `height`
Ширина и высота карты тайлов - `imgsrc`
Банк изображений (0-2), на который ссылается карта тайлов - `set(x, y, data)`
Устанавливает карту тайлов в координатах (`x`, `y`) с использованием списка строк.
Пример: `pyxel.tilemaps[0].set(0, 0, ["0000 0100 a0b0", "0001 0101 a1b1"])` - `load(x, y, filename, layer)`
Загружает `layer`(0-) из файла TMX (Tiled Map File) в координаты (`x`, `y`). - `pget(x, y)`
Получает тайл в координатах (`x`, `y`). Тайлы представлены в виде кортежа `(image_tx, image_ty)`. - `pset(x, y, tile)`
Рисует `tile` в координатах (`x`, `y`). Тайл представлен в виде кортежа `(image_tx, image_ty)`. ### Класс Sound - `notes`
Список нот (0-127). Чем больше число, тем выше звук. Нота `33` соответствует 'A2' (440 Hz). Паузы обозначаются значением `-1`. - `tones`
Список тонов (0:Triangle / 1:Square / 2:Pulse / 3:Noise) - `volumes`
Список громкостей (0-7) - `effects`
Список эффектов (0:None / 1:Slide / 2:Vibrato / 3:FadeOut / 4:Half-FadeOut / 5:Quarter-FadeOut) - `speed`
Скорость воспроизведения. `1` — самая быстрая, и чем больше число, тем медленнее воспроизведение. При значении `120` длительность одной ноты составляет 1 секунду. - `set(notes, tones, volumes, effects, speed)`
Устанавливает ноты, тоны, громкости и эффекты с помощью строки. Если длина тонов, громкостей или эффектов меньше, чем у нот, они будут повторяться с начала. - `set_notes(notes)`
Устанавливает ноты с помощью строки, состоящей из символов `CDEFGAB`+`#-`+`01234` или `R`. Регистр не имеет значения, а пробелы игнорируются.
Пример: `pyxel.sounds[0].set_notes("g2b-2d3r rf3f3f3")` - `set_tones(tones)`
Устанавливает тоны с помощью строки, состоящей из символов `TSPN`. Регистр не имеет значения, а пробелы игнорируются.
Пример: `pyxel.sounds[0].set_tones("ttss pppn")` - `set_volumes(volumes)`
Устанавливает громкости с помощью строки, состоящей из символов `01234567`. Регистр не имеет значения, а пробелы игнорируются.
Пример: `pyxel.sounds[0].set_volumes("7777 7531")` - `set_effects(effects)`
Устанавливает эффекты с помощью строки, состоящей из символов `NSVFHQ`. Регистр не имеет значения, а пробелы игнорируются.
Пример: `pyxel.sounds[0].set_effects("nfnf nvvs")` - `mml(code)`
Передача строки [MML (Music Macro Language)](https://en.wikipedia.org/wiki/Music_Macro_Language) переводит в режим MML и воспроизводит звук в соответствии с её содержимым. В этом режиме обычные параметры, такие как `notes` и `speed`, игнорируются. Чтобы выйти из режима MML, вызовите `mml()` без аргументов. Подробнее о MML см. [на этой странице](faq-en.md).
Пример: `pyxel.sounds[0].mml("T120 Q90 @1 V100 O5 L8 C4&CC.C.D16 @VIB1{10,20,20} E2C2")` - `save(filename, sec, [ffmpeg])`
Создает WAV-файл, который воспроизводит звук в течение указанного количества секунд. Если FFmpeg установлен и `ffmpeg` установлен в значение `True`, также создается MP4-файл. - `total_sec()`
Возвращает время воспроизведения звука в секундах. Возвращает `None`, если в MML используется бесконечный цикл. ### Класс Music - `seqs`
Двумерный список звуков (0-63) для нескольких каналов - `set(seq0, seq1, seq2, ...)`
Устанавливает списки звуков (0-63) для каждого канала. Если указан пустой список, этот канал не будет использоваться для воспроизведения.
Пример: `pyxel.musics[0].set([0, 1], [], [3])` - `save(filename, sec, [ffmpeg])`
Создает WAV-файл, который воспроизводит музыку в течение указанного количества секунд. Если FFmpeg установлен и `ffmpeg` установлен в значение `True`, также создается MP4-файл. ### Расширенный API Pyxel включает в себя "Расширенный API", который не упоминается в данной справке, так как он может сбивать пользователей с толку или требовать специализированных знаний для использования. Если вы уверены в своих навыках, попробуйте создать удивительные работы, используя [это](../python/pyxel/__init__.pyi) в качестве руководства! ## Как внести вклад ### Подавать проблемы Используйте [Трекер проблем](https://github.com/kitao/pyxel/issues) для подачи отчетов об ошибках и запросов на функции или улучшения. Перед отправкой новой проблемы убедитесь, что нет похожих открытых вопросов. ### Функциональное тестирование Любой, кто вручную тестирует код и сообщает об ошибках или предлагает улучшения в [Трекере проблем](https://github.com/kitao/pyxel/issues), очень приветствуется! ### Подавать запросы на изменение Патчи и исправления принимаются в форме запросов на изменение (PR). Убедитесь, что проблема, на которую ссылается запрос на изменение, открыта в Трекере проблем. Подача запроса на изменение подразумевает, что вы соглашаетесь лицензировать свой вклад по [Лицензии MIT](../LICENSE). ## Веб-инструменты и примеры - [Pyxel Web Examples](https://kitao.github.io/pyxel/wasm/examples/) - [Pyxel Web Launcher](https://kitao.github.io/pyxel/wasm/launcher/) - [Pyxel Code Maker](https://kitao.github.io/pyxel/wasm/code-maker/) [[User Manual](https://qiita.com/kitao/items/b5b3fb28ebf9781eda2e)] - [Pyxel MML Studio](https://kitao.github.io/pyxel/wasm/mml-studio/) [[User Manual](https://qiita.com/kitao/items/a86de4f7d6a0ed656a89)] ## Дополнительная информация - [Часто задаваемые вопросы](faq-en.md) - [Примеры пользователей](https://github.com/kitao/pyxel/wiki/Pyxel-User-Examples) - [X-аккаунт разработчика](https://x.com/kitao) - [Сервер Discord (Английский)](https://discord.gg/Z87eYHN) - [Сервер Discord (Японский)](https://discord.gg/qHA5BCS) ## Лицензия Pyxel лицензируется по [Лицензии MIT](../LICENSE). Его можно использовать в проприетарном программном обеспечении, при условии, что все копии программного обеспечения или его значительные части содержат копию условий лицензии MIT и уведомление об авторских правах. ## Поиск спонсоров Pyxel ищет спонсоров на GitHub Sponsors. Пожалуйста, подумайте о том, чтобы стать спонсором Pyxel, чтобы поддержать его дальнейшую поддержку и развитие функций. В качестве преимущества спонсоры могут консультироваться непосредственно с разработчиком Pyxel. Для получения дополнительной информации посетите [эту страницу](https://github.com/sponsors/kitao).