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í.
usar std/pincel/graficosTipos
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 decimalCamara2D.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.