#
[](https://pypi.org/project/pyxel/)
[](https://github.com/kitao/pyxel)
[](https://github.com/kitao/pyxel)
[](https://github.com/sponsors/kitao)
[](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
```
Следующие примеры будут скопированы в текущую директорию:
Примеры можно выполнить с помощью следующих команд:
```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).