Programando con Love 2D – Rectángulos de colores en movimiento

En anteriores entradas hemos hablado de como compilar love 2d (un framework LUA para realizar juegos en 2D) y hemos visto un ejemplo de como mostrar tipografías y reproducir sonido en ogg.

Por tanto si no tienes love 2D en tu sistema quizás te interesará primero compilarlo para tenerlo o incluso instalarlo desde repositorio (aunque puede que no sea la última versión).

Al margen de como compilar love y el ejemplo de tipografía y sonido también hemos puesto ejemplos de como hacer cositas con LUA (el lenguaje que usa love 2D) y que quizás pueden ser de utilidad para quienes buscan hacer algo con love o simplemente hacerlo todo con LUA sin usar love.

Esos ejemplos son:

* Scripts en Lua con luacurl para descarga de archivos
* Publicar estados en GNUsocial desde un script en Lua
* luasql-mysql – Acceso a bases de datos Mariadb desde script en Lua

Ahora vamos a ver unos sencillos ejemplos de como dibujar en pantalla rectángulos y como moverlos.

Una línea verde de 1 pixel de alto y todo el ancho de la pantalla. La línea se moverá de arriba a abajo de todo el alto de la pantalla y cuando llega al final sale de nuevo desde arriba.

function love.load()
        love.window.setFullscreen(true, "desktop") -- set fullscreen
        sw, sh = love.graphics.getDimensions() -- sw screen width and sh screen height
        x = 0
        y = 0
        rw = sw -- rw rectangle width == sw screen width
        rh = 1 -- rh rectangle height
end

function love.update()
        if ( y < sh ) then
                y = y + 1
        else
                y = 0
        end
end

function love.draw()
        love.graphics.setColor(0, 255, 0) -- set green color
        love.graphics.rectangle("fill", x, y, rw, rh)
end

Pero posiblemente antes de hacer eso sea preferible realizar un simple rectángulo de 5x5 pixels (de de ancho y 5 de alto) que posicionaremos en pantalla.

function love.load()
end

function love.update()

end

function love.draw()
        love.graphics.setColor(0, 255, 0) -- set green color
        love.graphics.rectangle("fill", 100, 100, 5, 5)
end

Si nos fijamos en la función load de love no añadimos nada, en la de update nada pero si en draw.
Eso funcionará pero no se moverá el rectángulo. Simplemente tendremos un rectángulo verde (rgb) colocado en el eje x=100 y=100 con tamaño x=5 y tamaño=y5 .

Para moverlo podemos añadir algo de código en la función load y en la función update. Por ejemplo esto:

function love.load()
        x = 0
end

function love.update()
        x = x + 1
end

function love.draw()
        love.graphics.setColor(0, 255, 0) -- set green color
        love.graphics.rectangle("fill", x, 100, 5, 5)
end

Hemos declarado la variable x y la hemos puesto de valor 0.
En la función update cada vez que pasa aumenta el valor en 1.
En la función draw hemos puesto la variable x en vez del 100 que teníamos antes. De modo que irá variando y se moverá en el eje x un punto de 5x5 pixeles verde.

Con esos ejemplos más sencillos no costará nada entender el primer ejemplo algo más controlado. Un ejemplo en el que se controla el ancho y alto de la pantalla del usuario y en base a eso se mueve la línea que ocupará toda la pantalla de ancho.

Saludos cordiales.

próximo Publicación

Atrás Publicación

Dejar una contestacion

© 2018 [ MIERDA TV ]

Tema de Anders Norén