Formas geométricas. Love2d pone a nuestra disposición funciones de dibujo que serán muy útiles para nuestros desarrollos. Muchas de ellas las utilizaremos en futuros programas para representar y analizar en tiempo de ejecución el comportamiento de los elementos del juego.

Mira el siguiente ejemplo:

function love.load()
	print("www.altaruru.com")
	print("altaruru lua+love2d - basics")
	print("dibujando figuras geometricas")	
	print("pulsa ESCAPE TO QUIT ;-)")
end

function love.draw()
	love.graphics.rectangle("fill", 100, 100, 40, 40)
end

function love.keypressed(key)
	if key == "escape" then
		love.event.quit()
	end
end

function love.quit()
  print("¡Hasta pronto!")
end

Pasaremos muy rápido por las funciones que ya hemos visto anteriormente.

Print escribe en el terminal el texto que le indicamos entre comillas. Lo utilizamos en love.load() para el mensaje de bienvenida y en quit() para la despedida.

En love.keypressed() capturamos la pulsación de la tecla «escape» para cerrar el juego.

rectangle()

Ahora veamos algo nuevo, fíjate en la función love.draw()

function love.draw()
	love.graphics.rectangle("fill", 100, 100, 40, 40)
end

Hemos creado un cuadrado en las coordenadas 100,100 de 40×40 pixels.

La función love.graphics.rectangle() permite dibujar rectángulos, tiene 5 parámetros:

  • tipo: puede ser «fill» o «line»
  • coordenada x
  • coordenada y
  • ancho
  • alto

Vamos a pintar otro cuadrado junto a este de 20×20 añade esta linea a continuación:

love.graphics.rectangle("fill", 160, 100, 20, 20)
ejemplo función rectangle()

Ahora vamos a crear un rectángulo que contenga a los dos cuadrados:

love.graphics.rectangle("line", 80, 80, 200, 80)

Observa que el rectángulo no está relleno al haber utilizado como parámetro «line«

Hasta ahora tenemos tres lineas en draw():

function love.draw()
	love.graphics.rectangle("fill", 100, 100, 40, 40)
	love.graphics.rectangle("fill", 160, 100, 20, 20)
	love.graphics.rectangle("line", 80, 80, 200, 80)
end

Circle

No todo es cuadrado, ¿que tal si mostramos algunos círculos? Escribe las siguientes lineas a continuación:

love.graphics.circle("fill", 360, 100, 20)
love.graphics.circle("fill", 400, 100, 10)
love.graphics.circle("line", 380, 100, 60)
  • El primer parámetro indica si se pinta relleno «fill» o solo el borde «line».
  • Segundo y tercer parámetros son las coordenadas (x, y)
  • Y por último el radio del circulo.

Hay que tener en cuenta que las coordenadas hacen referencia al centro del circulo.

¿Fácil verdad?

¿Y lineas? , ¿se pueden pintar lineas? pues claro!!!

Line

Para que quede más borra el contenido de la función draw() y dejala así:

function love.draw()
  love.graphics.line(100, 100, 300, 140)
end

Line es una función diferente a las anteriores.

Para definir una linea hacen falta como mínimo dos vértices, cada vertice se define por su par de coordenadas x,y.

  • Los dos primeros parámetros son las coordenadas x,y del primer vertice.
  • Los parámetros 3 y 4 corresponden al segundo par de coordenadas x,y.

Line permite una linea con tantos vértices como queramos, simplemente hay que continuar pasando las coordenadas:

love.graphics.line(100, 100, 300, 140, 380, 100, 430, 140, 460, 135)

La línea puede ser tan compleja como queramos.

Polygon

Por último, para hacer polígonos irregulares con tantos vértices como queramos tenemos la función polygon().

love.graphics.polygon("line", 300, 100, 400, 100, 380, 150, 320, 150)
  • Al ser una figura cerrada, con el primer parámetro podemos elegir si dibujar solo el borde o pintar el relleno.
  • Los vértices se definen como en los casos anteriores por pares de coordenadas x,y.
  • Al igual que con Line(), podemos usar tantos vértices como queramos. La diferencia es que el último vértice y el primero se unen para cerrar la figura.

Comparando line y polygon

Por último, en el siguiente código vemos la diferencia entre line y polygon:

function love.draw()	
	love.graphics.line(100, 100, 200, 100, 180, 150, 120, 150)
	love.graphics.polygon("line", 300, 100, 400, 100, 380, 150, 320, 150)	
	love.graphics.polygon("fill", 500, 100, 600, 100, 580, 150, 520, 150)
end

Con esto concluimos el uso de funciones de dibujo geométricas.

Por defecto el color de dibujo es blanco, ¿quieres saber como usar color? mira esta entrada.

Saludos!!



Deja tu comentario