# [![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 # Запустити приклад у каталозі examples cd pyxel_examples pyxel run 01_hello_pyxel.py # Запустити застосунок у каталозі examples/apps 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. - `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`, та приховує, якщо у `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`, якщо він дорівнює нулю, і `-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)`
Встановлює початкове зерно для шуму Перліна. - `noise(x, [y], [z])`
Повертає значення шуму Перліна для заданих координат. ### Клас 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/) - [Pyxel MML Studio](https://kitao.github.io/pyxel/wasm/mml-studio/) ## Інша інформація - [Часті запитання](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).