graficos

Dibuja formas, imágenes, hojas de sprites y texto en pantalla, y controla la cámara 2D. Todo lo que ves en pantalla pasa por aquí.

importar
usar std/pincel/graficos

Tipos

graficos.Camara2D

Una cámara 2D: posición, origen (punto de la pantalla que corresponde a `pos`), zoom y rotación.

pos Vec2origen Vec2zoom decimal = 1rotacion decimal

Camara2D.a_mundo(punto mate.Vec2) mate.Vec2

Convierte un punto de la pantalla (por ejemplo entrada.posicion_raton()) a coordenadas del mundo vistas con esta cámara.

Camara2D.a_pantalla(punto mate.Vec2) mate.Vec2

Convierte un punto del mundo a coordenadas de pantalla con esta cámara; lo contrario de a_mundo.

Camara2D.siguiendo(objetivo mate.Vec2, suavizado decimal) graficos.Camara2D

Una copia de la cámara acercada a `objetivo`: `suavizado` 1 la pone justo encima y valores pequeños (0.1) la hacen seguirlo con retraso. Úsalo en actualizar: `@camara = @camara.siguiendo(@jugador.pos, 0.1)`.

Camara2D.limitada(mundo mate.Rect) graficos.Camara2D

Una copia de la cámara movida lo justo para no mostrar nada fuera de `mundo` (el rectángulo del nivel); si el mundo es más pequeño que la pantalla, lo centra. Ignora la rotación.

Camara2D.sacudida(intensidad decimal) graficos.Camara2D

Una copia de la cámara desplazada al azar hasta `intensidad` píxeles en cada eje. Aplícala solo al dibujar y ve bajando la intensidad para un temblor que se apaga.

Camara2D.visible() mate.Rect

El rectángulo del mundo que se ve en pantalla con esta cámara; útil para no dibujar lo que queda fuera.

graficos.Destino

Una imagen preparada por graficos.pintar_en para pintar en ella, para usarse con `con`.

Destino.entrar()

Empieza a pintar en la imagen; se usa automáticamente al abrir un bloque `con` sobre él.

Destino.salir()

Vuelve a pintar donde se pintaba antes, con su cámara y su recorte; se usa automáticamente al cerrar el bloque `con`.

graficos.Fuente

Una fuente tipográfica cargada con recursos.fuente (o la incorporada, graficos.fuente_predeterminada), lista para usarse con graficos.texto.

graficos.Hoja

Una imagen dividida en cuadros iguales (creada con graficos.hoja), para dibujar sprites y tiles por número.

graficos.Imagen

Una imagen cargada o creada con lienzo, lista para dibujarse con graficos.imagen y funciones relacionadas.

graficos.Recorte

Un recorte de la pantalla abierto por graficos.recortar, para usarse con `con`: al salir del bloque se vuelve a dibujar como antes.

Recorte.entrar()

Aplica el recorte, limitado al recorte que había al crearlo; se usa automáticamente al abrir un bloque `con` sobre él.

Recorte.salir()

Restaura el recorte (o la pantalla completa) que había antes; se usa automáticamente al cerrar el bloque `con`.

Funciones

graficos.limpiar(color color.Color)al pintar

Pinta toda la pantalla del color dado. Suele ser lo primero que se llama en pintar().

graficos.rectangulo(x decimal, y decimal, ancho decimal, alto decimal, color color.Color, origen mate.Vec2 = {}, rotacion decimal = 0)al pintar

Dibuja un rectángulo en (x, y) con el ancho y alto dados. `origen` desplaza el punto de referencia dentro del rectángulo (por defecto la esquina superior izquierda).

graficos.rectangulo_v(pos mate.Vec2, tamano mate.Vec2, color color.Color, origen mate.Vec2 = {}, rotacion decimal = 0)al pintar

Como graficos.rectangulo pero recibiendo posición y tamaño como Vec2.

graficos.rectangulo_rect(rect mate.Rect, color color.Color, origen mate.Vec2 = {}, rotacion decimal = 0)al pintar

Dibuja el Rect dado directamente.

graficos.circulo(x decimal, y decimal, radio decimal, color color.Color)al pintar

Dibuja un círculo relleno centrado en (x, y) con el radio dado.

graficos.circulo_v(centro mate.Vec2, radio decimal, color color.Color)al pintar

Como graficos.circulo pero recibiendo el centro como Vec2.

graficos.linea(x1 decimal, y1 decimal, x2 decimal, y2 decimal, color color.Color, grosor decimal = 1)al pintar

Dibuja una línea recta entre (x1, y1) y (x2, y2) con el grosor dado.

graficos.linea_v(a mate.Vec2, b mate.Vec2, color color.Color, grosor decimal = 1)al pintar

Como graficos.linea pero recibiendo ambos puntos como Vec2.

graficos.imagen(imagen graficos.Imagen, x decimal, y decimal, origen mate.Vec2 = {}, escala mate.Vec2 = {x: 1, y: 1}, rotacion decimal = 0, tinte color.Color = .Blanco, relleno color.Color = .Transparente)al pintar

Dibuja `imagen` en (x, y). `escala` y `rotacion` transforman la imagen alrededor de `origen`; `tinte` la colorea (multiplica). `relleno` pinta la silueta de ese color con la fuerza de su alfa: `.Blanco` da el destello blanco de un golpe y color.rgba(255, 255, 255, 128) uno a medias.

graficos.imagen_v(imagen graficos.Imagen, pos mate.Vec2, origen mate.Vec2 = {}, escala mate.Vec2 = {x: 1, y: 1}, rotacion decimal = 0, tinte color.Color = .Blanco, relleno color.Color = .Transparente)al pintar

Como graficos.imagen pero recibiendo la posición como Vec2.

graficos.imagen_rect(imagen graficos.Imagen, destino mate.Rect, origen mate.Vec2 = {}, rotacion decimal = 0, tinte color.Color = .Blanco, relleno color.Color = .Transparente)al pintar

Dibuja `imagen` estirada o encogida para llenar exactamente el Rect `destino`.

graficos.region(imagen graficos.Imagen, fuente mate.Rect, x decimal, y decimal, origen mate.Vec2 = {}, escala mate.Vec2 = {x: 1, y: 1}, rotacion decimal = 0, tinte color.Color = .Blanco, relleno color.Color = .Transparente)al pintar

Dibuja solo la región `fuente` (un recorte) de `imagen`, en (x, y). Útil para hojas de sprites (spritesheets).

graficos.region_v(imagen graficos.Imagen, fuente mate.Rect, pos mate.Vec2, origen mate.Vec2 = {}, escala mate.Vec2 = {x: 1, y: 1}, rotacion decimal = 0, tinte color.Color = .Blanco, relleno color.Color = .Transparente)al pintar

Como graficos.region pero recibiendo la posición como Vec2.

graficos.region_rect(imagen graficos.Imagen, fuente mate.Rect, destino mate.Rect, origen mate.Vec2 = {}, rotacion decimal = 0, tinte color.Color = .Blanco, relleno color.Color = .Transparente)al pintar

Como graficos.region pero estirando el recorte para llenar el Rect `destino`.

graficos.texto(texto cadena, fuente graficos.Fuente, x decimal, y decimal, tamano decimal = 20, color color.Color = .Blanco, origen mate.Vec2 = {}, rotacion decimal = 0)al pintar

Dibuja `texto` con la fuente dada en (x, y), con el tamaño y color indicados.

graficos.texto_v(texto cadena, fuente graficos.Fuente, pos mate.Vec2, tamano decimal = 20, color color.Color = .Blanco, origen mate.Vec2 = {}, rotacion decimal = 0)al pintar

Como graficos.texto pero recibiendo la posición como Vec2.

graficos.hoja(imagen graficos.Imagen, ancho_cuadro entero, alto_cuadro entero) graficos.Hoja

Divide `imagen` en cuadros iguales de `ancho_cuadro` x `alto_cuadro`, numerados de izquierda a derecha y de arriba abajo empezando en 0. Funciona con imágenes cargadas o creadas con lienzo.

graficos.cuadros(hoja graficos.Hoja) entero

La cantidad de cuadros de la hoja.

graficos.tamano_cuadro(hoja graficos.Hoja) mate.Vec2

El tamaño de cada cuadro de la hoja, como Vec2.

graficos.cuadro(hoja graficos.Hoja, indice entero, x decimal, y decimal, origen mate.Vec2 = {}, escala mate.Vec2 = {x: 1, y: 1}, rotacion decimal = 0, tinte color.Color = .Blanco, espejo_h bool = falso, espejo_v bool = falso, relleno color.Color = .Transparente)al pintar

Dibuja el cuadro `indice` de la hoja en (x, y); admite origen, escala, rotación, tinte y espejo horizontal/vertical (el cuadro se voltea dentro de su propio rectángulo). Un índice fuera de la hoja no dibuja nada, así que -1 sirve como «vacío». `relleno` pinta la silueta como en graficos.imagen.

graficos.cuadro_v(hoja graficos.Hoja, indice entero, pos mate.Vec2, origen mate.Vec2 = {}, escala mate.Vec2 = {x: 1, y: 1}, rotacion decimal = 0, tinte color.Color = .Blanco, espejo_h bool = falso, espejo_v bool = falso, relleno color.Color = .Transparente)al pintar

Como graficos.cuadro pero recibiendo la posición como Vec2.

graficos.medir_texto(texto cadena, fuente graficos.Fuente, tamano decimal = 20) mate.Vec2

Ancho y alto (como Vec2) que ocuparía `texto` con esa fuente y tamaño; sirve para centrar o alinear. Se puede llamar en cualquier momento.

graficos.fuente_predeterminada() graficos.Fuente

La fuente Go Regular incorporada (licencia BSD), lista para graficos.texto sin traer ningún archivo .ttf. Soporta acentos y ñ.

graficos.texto_depuracion(texto cadena, x decimal = 0, y decimal = 0)al pintar

Dibuja texto con la fuente de depuración incorporada (sin necesitar cargar ninguna fuente). Pensado para mensajes rápidos de FPS/estado, no para el juego final.

graficos.texto_depuracion_v(texto cadena, pos mate.Vec2 = {})al pintar

Como graficos.texto_depuracion pero recibiendo la posición como Vec2.

graficos.tamano() mate.Vec2

El tamaño actual de la ventana/pantalla lógica, como Vec2.

graficos.recortar(rect mate.Rect) graficos.Recorteal pintar

Solo se dibuja dentro de `rect` (en coordenadas de pantalla, sin cámara). Con `con graficos.recortar(rect)` el recorte dura lo que el bloque y se quita solo al salir; los bloques anidados se limitan al recorte que los contiene. Llamado suelto, dura hasta quitar_recorte o el siguiente cuadro. Sirve para deslizar contenido dentro de un marco.

graficos.quitar_recorte()al pintar

Vuelve a dibujar en toda la pantalla tras un graficos.recortar suelto. Con un bloque `con` no hace falta.

graficos.pintar_en(imagen graficos.Imagen) graficos.Destino

Con `con graficos.pintar_en(imagen)`, todo lo que se dibuja dentro del bloque se pinta en `imagen` en vez de en la pantalla, sin cámara ni recorte; al salir se vuelve a dibujar donde antes. La imagen no se limpia sola (usa graficos.limpiar) y se puede usar en cualquier momento, no solo desde pintar. Sirve para minimapas, escenas a baja resolución o fondos que se pintan una sola vez.

graficos.liberar(imagen graficos.Imagen)

Libera la copia de `imagen` en la tarjeta gráfica. La imagen sigue siendo válida y vuelve a subirse sola al dibujarla; lo pintado en ella con graficos.pintar_en se pierde.

graficos.usar_camara(camara graficos.Camara2D)al pintar

A partir de aquí, todo lo dibujado usa la cámara 2D dada (desplazamiento, zoom y rotación) hasta la próxima llamada a usar_camara o restablecer_camara.

graficos.restablecer_camara()al pintar

Vuelve a dibujar en coordenadas de pantalla normales, deshaciendo el efecto de usar_camara.