Skip to content

Latest commit

 

History

History
723 lines (516 loc) · 28.7 KB

README.es.md

File metadata and controls

723 lines (516 loc) · 28.7 KB

Downloads GitHub Repo stars GitHub forks GitHub Sponsors

ko-fi

[ English | 中文 | Deutsch | Español | Français | Italiano | 日本語 | 한국어 | Português | Русский ]

Pyxel es un motor de videojuegos para Python.

Gracias a sus características simples inspiradas en las consolas de juegos retro, como el solo mostrar 16 colores y el reproducir 4 sonidos al mismo tiempo, puedes sentirte libre de disfrutar creando juegos en estilo pixel art.

La motivación para el desarrollo de Pyxel es el feedback de los usuarios. Por favor, ¡dale una estrella a Pyxel en GitHub!

Las especificaciones y API de Pyxel se inspiran en PICO-8 y TIC-80.

Pyxel es de código abierto y gratuito. ¡Empecemos haciendo un juego retro con Pyxel!

Características

  • Funciona en Windows, Mac, Linux y Web
  • Programación con Python
  • Paleta de 16 colores
  • 3 bancos de imágenes de 256x256
  • 8 mapas de 256x256
  • 4 canales con 64 posibles definiciones de sonido
  • 8 músicas que pueden combinar sonidos arbitrarios
  • Entrada de teclado, ratón y gamepad.
  • Editor de imágenes y sonido

Paleta de colores

Como instalarlo

Windows

Después de instalar Python3 (versión 3.7 o superior), ejecute el siguiente comando:

pip install -U pyxel

Si instalas Python con el instalador oficial, marca la casilla Add Python 3.x to PATH para activar el comando pyxel.

Mac

Después de instalar Homebrew, ejecute los siguientes comandos:

brew install pipx
pipx ensurepath
pipx install pyxel

Para actualizar la versión después de instalar Pyxel, ejecute pipx upgrade pyxel.

Linux

Después de instalar los paquetes SDL2 (libsdl2-dev para Ubuntu), Python3 (versión 3.7 or superior), y python3-pip, ejecute el siguiente comando:

sudo pip3 install -U pyxel

Si lo anterior no funciona, intente la autoconstrucción según las instrucciones de Makefile.

Web

La versión web de Pyxel no requiere la instalación de Python ni de Pyxel y funciona tanto en PC como en smartphones y tabletas con navegadores web compatibles.

Para obtener instrucciones específicas, consulte esta página.

Prueba los ejemplos de Pyxel

Después de instalar Pyxel, los ejemplos de Pyxel se copiarán a la carpeta actual con el siguiente comando:

pyxel copy_examples

Los ejemplos serán copiados de la siguiente manera:

01_hello_pyxel.py Aplicación simple Demo Code
02_jump_game.py Juego de plataformas con los archivos de recursos Pyxel Demo Code
03_draw_api.py Demostración de la API para dibujar Demo Code
04_sound_api.py Demostración de la API de sonidos Demo Code
05_color_palette.py Lista de la paleta de colores Demo Code
06_click_game.py Juego con clics del ratón Demo Code
07_snake.py Juego de serpiente con música de fondo Demo Code
08_triangle_api.py Demostración de dibujo de triángulos con la API Demo Code
09_shooter.py Juego de nave espacial con transiciones de pantalla Demo Code
10_platformer.py Juego con desplazamiento lateral con plataformas con mapa Demo Code
11_offscreen.py Rendimiento fuera de la pantalla con la clase Image Demo Code
12_perlin_noise.py Animación del ruido Perlin Demo Code
13_bitmap_font.py Dibujar una fuente bitmap Demo Code
14_synthesizer.py Sintetizador con funciones de expansión de audio Demo Code
15_tiled_map_file.py Cargar y dibujar un archivo Tile Map (.tmx) Demo Code
99_flip_animation.py Animación con función flip (sólo plataformas no web) Demo Code
30SecondsOfDaylight.pyxapp El primer ganador del Jam de Pyxel, por Adam Demo Code
megaball.pyxapp Juego arcade de física de bolas, por Adam Demo Code
8bit-bgm-gen.pyxapp Generador de música de fondo hecho por frenchbread Demo Code

Los ejemplos se pueden ejecutar con el siguiente comando:

cd pyxel_examples
pyxel run 01_hello_pyxel.py
pyxel play 30SecondsOfDaylight.pyxapp

Como utilizarlo

Crear una aplicación Pyxel

Tras importar el módulo Pyxel en el código de Python, especifique la dimensión de la ventana con la función init, luego, inicie la aplicación con la función run.

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)

Los argumentos de la función run son la función update para actualizar cada fotograma y la función draw para dibujar la pantalla cuando sea necesario.

En una aplicación, es recomendable envolver el código de pyxel en una clase como la siguiente:

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()

Cuando se crean gráficos simples sin animación, se puede utilizar la función show para hacer el código más conciso.

import pyxel

pyxel.init(120, 120)
pyxel.cls(1)
pyxel.circb(60, 60, 40, 7)
pyxel.show()

Corre aplicaciones Pyxel

El código generado puede ser ejecutado con el siguiente comando:

pyxel run PYTHON_SCRIPT_FILE

También se puede ejecutar como un script normal de Python:

python3 PYTHON_SCRIPT_FILE

Controles Especiales

Los siguientes controles especiales se pueden utilizar en cualquier aplicación que esté corriendo:

  • Esc
    Salir de la aplicación
  • Alt(Option)+1
    Guardar la captura de pantalla al escritorio
  • Alt(Option)+2
    Restablecer el momento de inicio de la grabación del vídeo de captura de pantalla
  • Alt(Option)+3
    Guarda la captura de video en el escritorio (hasta 10 segundos)
  • Alt(Option)+9
    Cambia entre los modos de pantalla (Crisp/Smooth/Retro)
  • Alt(Option)+0
    Activa el monitor de monitorización (fps, el tiempo que tarda en actualizar la pantalla y el tiempo que tarda en dibujar)
  • Alt(Option)+Enter
    Activar el modo de pantalla completa
  • Shift+Alt(Option)+1/2/3
    Guardar el banco de imágenes correspondiente en el escritorio
  • Shift+Alt(Option)+0
    Guardar la paleta de colores actual en el escritorio

Como crear los recursos

El Editor de Pyxel crea imágenes y sonidos que se utilizan en la aplicación de Pyxel.

Se ejecuta con el siguiente comando:

pyxel edit PYXEL_RESOURCE_FILE

Si el archivo de recursos de Pyxel existe, el archivo se carga y si no existe, se crea con el nombre especificado. Si el archivo de recursos es omitido, el nombre de este será my_resource.pyxres.

Tras iniciar el Editor de Pyxel, el archivo puede ser cambiado arrastrando y soltando otro archivo de recursos. Si el archivo se arrastra y se tiene pulsada la tecla Ctrl(Cmd), solo el recurso concreto se cargará (Imagen/Mapa/Sonido/Música) que se está editando actualmente. Esta operación permite combinar multiples archivos de recursos en uno solo.

Dicho archivo de recursos podrá see cargado con la función load.

EL Editor de Pyxel tiene los siguientes modos de edición:

Editor de imágenes

El modo para editar el banco de imágenes.

Arrastre y suelte un archivo de imagen (PNG/GIF/JPEG) en el Editor de imágenes para cargar la imagen en el banco de imágenes actualmente seleccionado.

Editor de mapa / losas

El modo para editar el mapa de losas o mapa en el que las imágenes en el banco de imágenes están organizados en un patrón de azulejos o baldosas.

Arrastre y suelte un archivo TMX (Tiled Map File) en el Editor de mapas en mosaico para cargar su capa en el orden de dibujo que corresponde al número de mapa en mosaico seleccionado actualmente.

Editor de sonido

El modo para editar el sonido.

Editor de música

El modo para editar música en el que organiza los sonidos del editor de sonidos para poder reproducirlos.

Otros recursos en la creación de métodos

Las imágenes de Pyxel y el mapa también se pueden crear de las siguientes maneras:

  • Crea una imagen de una lista de strings con la función Image.set o la función Tilemap.set
  • Carga un archivo de imagen (PNG/GIF/JPEG) en la paleta de Pyxel con la función Image.load

Los sonidos de Pyxel también se pueden crear ude la siguiente manera:

  • Crear el sonido desde strings con las funciones Sounds.set o Music.set

Por favor, consulte la API para el uso de estas funciones.

Como distribuir tu aplicación

Pyxel soporta un archivo dedicado para distribuir el código (formato de aplicación de Pyxel) que funciona en todas las plataformas.

Cree la aplicación (.pyxapp) con el siguiente comando:

pyxel package APP_DIR STARTUP_SCRIPT_FILE

Si la aplicación debe incluir recursos o módulos adicionales, colóquelos en el directorio de la aplicación.

La aplicación creada se puede ejecutar con el siguiente comando:

pyxel play PYXEL_APP_FILE

El archivo de aplicación de Pyxel también se puede convertir en un ejecutable o en un archivo HTML con los comandos pyxel app2exe o pyxel app2html.

Referencias de la API

Sistema

  • width, height
    La anchura y la altura de la pantalla

  • frame_count
    El número de fotogramas que han pasado

  • init(width, height, [title], [fps], [quit_key], [display_scale], [capture_scale], [capture_sec])
    Inicializa la aplicación de Pyxel con el tamaño (width, height). Los siguientes parámetros pueden ser especificados como opciones: el título con title, el ratio de fotogramas por segundo con fps, la tecla para salir de la aplicación con quit_key, la escala de la pantalla con display_scale, la escala de captura de pantalla con capture_scale y el tiempo máximo para grabar la pantalla con capture_sec.
    por ejemplo: pyxel.init(160, 120, title="My Pyxel App", fps=60, quit_key=pyxel.KEY_NONE, capture_scale=3, capture_sec=0)

  • run(update, draw)
    Comienza la aplicación de Pyxel y llama la función update para actualizar cada fotograma y la función draw para dibujar.

  • show()
    Muestra la pantalla y espera hasta que la tecla Esc sea pulsada.

  • flip()
    Refresca la pantalla un fotograma. La aplicación sale cuando se pulsa la tecla Esc. Esta función no funciona en la versión web.

  • quit()
    Salir de la aplicación

Recursos

  • load(filename, [excl_images], [excl_tilemaps], [excl_sounds], [excl_musics])
    Carga el archivo de recursos (.pyxres). Si una opción es True, el recurso no se cargará. Si existe un archivo de paleta (.pyxpal) con el mismo nombre en la misma ubicación que el archivo de recursos, también se cambiará el color de visualización de la paleta. El archivo de paleta es una entrada hexadecimal de los colores de visualización (por ejemplo, 1100FF), separados por nuevas líneas. El archivo de paleta también se puede utilizar para cambiar los colores mostrados en Pyxel Editor.

Entrada

  • mouse_x, mouse_y
    La posición del cursor

  • mouse_wheel
    EL valor actual de la rueda del ratón

  • btn(key)
    Devuelve True si key es presionada, si no devuelve False. (Lista de definición de teclas)

  • btnp(key, [hold], [repeat])
    Devuelve True si key es presionada en ese cuadro, si no devuelve False. Cuando hold y repeat son definidos, devuelve True en el intervalo de cuadro repeat cuando key es sostenida por más cuadros que el valor hold.

  • btnr(key)
    Devuelve True si se suelta la tecla key en ese frame, si no, devuelve False.

  • mouse(visible)
    Si visible es True, muestra el cursor del ratón. Si es False, no lo muestra. Incluso si el cursor no se muestra, su posición se actualiza.

Gráficos

  • colors
    Lista de la paleta de colores que se pueden representar. El color del display se especifica con un valor numérico de 24 bits. Utiliza colors.from_list y colors.to_list para directamente asignar y leer una lista de Python. Ejemplo: old_colors = pyxel.colors.to_list(); pyxel.colors.from_list([0x111111, 0x222222, 0x333333]); pyxel.colors[15] = 0x112233

  • images
    Lista de los bancos de imágenes (0-2). (Vea la clase Image)
    Ejemplo: pyxel.images[0].load(0, 0, "title.png")

  • tilemaps
    Lista de los tilemaps (0-7). (Vea la clase Tilemap)

  • clip(x, y, w, h)
    Establezca el área de dibujo de la pantalla de (x, y) a una anchura w y a una altura h. Reinicia el área de dibujo a todo el área de la pantalla con clip().

  • camera(x, y)
    Cambie las coordenadas de la esquina superior izquierda de la pantalla a (x, y). Restablezca las coordenadas de la esquina superior izquierda a (0, 0) con camera().

  • pal(col1, col2)
    Reemplaza el color col1 con col2 para dibujarlo. Utiliza pal() para resetear la paleta de colores y volver a la paleta que viene por defecto por defecto con Pyxel.

  • dither(alpha)
    Aplica dithering (pseudo-transparencia) al dibujar. Establece alpha en el rango 0.0-1.0, donde 0.0 es transparente y 1.0 es opaco.

  • cls(col)
    Borra la pantalla con el color col.

  • pget(x, y)
    Obtiene el color del pixel en la posición (x, y).

  • pset(x, y, col)
    Dibuja un pixel del color col en la posición (x, y).

  • line(x1, y1, x2, y2, col)
    Dibuja una línea del color col desde (x1, y1) a (x2, y2).

  • rect(x, y, w, h, col)
    Dibuja un rectángulo de anchura w, altura h y color col desde la posición (x, y).

  • rectb(x, y, w, h, col)
    Dibuja el perímetro de un rectángulo de anchura w, altura h y color col desde la posición (x, y).

  • circ(x, y, r, col)
    Dibuja un círculo de radio r y color col en (x, y).

  • circb(x, y, r, col)
    Dibuja una circunferencia de radio r y color col en (x, y).

  • elli(x, y, w, h, col)
    Dibuja una elipse de anchura w, altura h y color col desde (x, y).

  • ellib(x, y, w, h, col)
    Dibuja el contorno de una elipse de anchura w, altura h y color col desde (x, y).

  • tri(x1, y1, x2, y2, x3, y3, col)
    Dibuja un triángulo con los vertices (x1, y1), (x2, y2), (x3, y3) y color col.

  • trib(x1, y1, x2, y2, x3, y3, col)
    Dibuja el perímetro de un triángulo con los vertices (x1, y1), (x2, y2), (x3, y3) y color col.

  • fill(x, y, col)
    Dibuja una elipsis de anchura w, altura h y color col desde (x, y).

  • blt(x, y, img, u, v, w, h, [colkey])
    Copia la región de tamaño (w, h) desde la posición (u, v) del banco de imágenes img(0-2) a (x, y). Si es negativo el valor para la w y/o la h, se representará invirtiendo horizontalmente o verticalmente. Si colkey se especifica, se tratará ese color como transparente.

  • bltm(x, y, tm, u, v, w, h, [colkey])
    Copie la región de tamaño (w, h) de (u, v) del mapa de mosaicos tm(0-7) a ( x, y). Si se establece un valor negativo para w y / o h, se invertirá horizontal y / o verticalmente. Si se especifica "colkey", se trata como un color transparente. El tamaño de un mosaico es de 8x8 píxeles y se almacena en un mapa de mosaicos como una tupla de (tile_x, tile_y).

  • text(x, y, s, col)
    Dibuja un string s del colorcol en (x, y).

Audio

  • sounds
    Lista de los sonidos (0-63). (Vea la clase Sound)
    Ejemplo: pyxel.sounds[0].speed = 60

  • musics
    Lista de las músicas (0-7). (Vea la clase Music)

  • play(ch, snd, [tick], [loop])
    Reproduce el sonido snd(0-63) en el canal ch(0-3). Si el snd está en una lista, será reproducido en orden. La posición de inicio de la reproducción se puede especificar mediante un tick(1 tick = 1/120 segundos). Si True se especifica para loop, la reproducción se realizará en bucle.

  • playm(msc, [tick], [loop])
    Reproduce la música msc(0-7). La posición de inicio de la reproducción se puede especificar mediante un tick(1 tick = 1/120 segundos). Si True se especifica para loop, la reproducción en bucle tendrá lugar.

  • stop([ch])
    Para la reproducción del canal ch(0-3). stop() para detener todos los canales.

  • play_pos(ch)
    Obtenga la posición de la reproducción de la música de un canal ch(0-3) como la tupla (sound no, note no), no quiere decir número. Devuelve None cuando la música cesa.

Matemáticas

  • ceil(x)
    Devuelve el menor número entero mayor o igual a x.

  • floor(x)
    Devuelve el mayor entero menor o igual a x.

  • sgn(x)
    Devuelve 1 cuando x es positivo, 0 cuando es cero y -1 cuando es negativo.

  • sqrt(x)
    Devuelve la raíz cuadrada de x.

  • sin(deg)
    Devuelve el seno de deg grados.

  • cos(deg)
    Devuelve el coseno de deg grados.

  • atan2(y, x)
    Devuelve la arctangente de y/x en grados.

  • rseed(seed)
    Establece la semilla del generador de números aleatorios.

  • rndi(a, b)
    Devuelve un número entero aleatorio mayor o igual que a y menor o igual que b.

  • rndf(a, b)
    Devuelve un decimal aleatorio mayor o igual que a y menor o igual que b.

  • nseed(seed)
    Establece la semilla de ruido Perlin.

  • noise(x, [y], [z])
    Devuelve el valor del ruido Perlin para las coordenadas especificadas.

Clase Image

  • width, height
    La anchura y la altura de una imagen

  • set(x, y, data)
    Define la imagen en (x, y) por una lista de strings.
    Ejemplo: pyxel.images[0].set(10, 10, ["0123", "4567", "89ab", "cdef"])

  • load(x, y, filename)
    Carga el archivo con la imagen (PNG/GIF/JPEG) en (x, y).

  • pget(x, y)
    Obtén el color del pyxel en la posición (x, y).

  • pset(x, y, col)
    Dibuja un pixel del color col en las coordenadas (x, y).

Clase Tilemap

  • width, height
    La anchura y la altura del mapa

  • imgsrc
    El banco de imágenes (0-2) que referencia el mapa

  • set(x, y, data)
    Establece el mapa a (x, y) por una lista de strings
    Ejemplo: pyxel.tilemap(0).set(0, 0, ["0000 0100 a0b0", "0001 0101 a1b1"])

  • load(x, y, filename, layer)
    Cargue la capa en el orden de dibujo layer(0-) desde el archivo TMX (Tiled Map File) en (x, y).

  • pget(x, y)
    Obtén la celda del mapa de la posición (x, y). Una celda es una tupla formada por (tile_x, tile_y)

  • pset(x, y, tile)
    Dibuja una tile en (x, y). Una celda es una tupla formada por (tile_x, tile_y)

Clase Sound

  • notes
    Lista de notas (0-127). Cuanto mayor sea el número, mayor será el pitch (más agudo) y a 33, se convierte en la nota 'A2' (440 Hz). El resto es -1.

  • tones
    Lista de tonos (0:Triangular / 1:Cuadrada / 2:Pulsada / 3:Ruido)

  • volumes

  • Lista de volúmenes (0-7)

  • effects
    Lista de efectos de sonido (0:Nada / 1:Slide / 2:Vibrato / 3:FadeOut)

  • speed
    La velocidad de reproducción, 1 es la más rápida y al incrementar este número, la velocidad de reproducción disminuye. Cuando vale 120, la longitud de una nota es de 1 segundo.

  • set(notes, tones, volumes, effects, speed)
    Fija las notas, los tonos, el volumen y los efectos con una string. Si los tonos, el volumen, la longitud de los efectos son más cortos que la nota, se repetirá desde el principio.

  • set_notes(notes)
    Fija las notas con un string hecho por 'CDEFGAB'+'#-'+'01234' o 'R'. Sensible a las mayúsculas y minúsculas y los espacios en blanco serán ignorados.
    Ejemplo: pyxel.sounds[0].set_notes("G2B-2D3R RF3F3F3")

  • set_tones(tones)
    Fija las notas con un string hecho con 'TSPN'. Sensible a las mayúsculas y minúsculas y los espacios en blanco serán ignorados.
    Ejemplo: pyxel.sounds[0].set_tones("TTSS PPPN")

  • set_volumes(volumes)
    Fija el volumen con una string hecha de '01234567'. Sensible a las mayúsculas y minúsculas y los espacios en blanco serán ignorados.
    Ejemplo: pyxel.sounds[0].set_volumes("7777 7531")

  • set_effects(effects)
    Fija los efectos con una string hecha con 'NSVF'. Sensible a las mayúsculas y minúsculas y los espacios en blanco serán ignorados.
    Ejemplo: pyxel.sounds[0].set_effects("NFNF NVVS")

Clase Music

  • seqs
    Lista bidimensional de sonidos (0-63) con el número de canales

  • set(seq0, seq1, seq2, ...)
    Configura las listas de sonido (0-63) de los canales. Si se referencia una lista vacía, ese canal no se utilizará para reproducir el sonido.
    Ejemplo: pyxel.musics[0].set([0, 1], [], [3])

APIs avanzadas

Pyxel tiene "API avanzadas" que no se mencionan en esta referencia porque "puede confundir a los usuarios" o "necesita unos conocimientos especializados para poder utilizarlas".

Si estás familiarizado con tus habilidades. ¡Intenta crear proyectos alucinantes con esto como pista!

Como contribuir

Presentar un problema

Usa el Rastreador de problemas para enviar errores y solicitudes de mejora. Antes de presentar un nuevo tema, asegúrese de que no existe uno ya abierto similar.

Pruebas Manuales

Cualquier persona que compruebe y prueba manualmente el código y reporte errores o sugerencias para mejorar el código en el Issue Tracker es bienvenida!

Envio de Pull Request

Parches o errores son aceptables en forma de pull request (PRs). Asegurate de que el tema de la pull request esté abierta en el Issue Tracker.

Los pull request enviados se consideran acordados para poder publicarse bajo la Licencia MIT.

Otra Información

Licencia

Pyxel esta bajo la Licencia MIT. Puede ser reutilizada con el software propietario, siempre y cuando todas las copias del software o sus substanciales porciones del mismo incluyan una copia de los términos de la Licencia MIT y también un aviso de copyright.

Reclutamiento de patrocinadores

Pyxel está buscando patrocinadores en GitHub Sponsors. Considere patrocinar Pyxel para un mantenimiento continuo y adiciones de funciones. Los patrocinadores pueden consultar sobre Pyxel como un beneficio. Consulte aquí para obtener más detalles.