Code: Select all
-- Lista de nombres de tiles disponibles
local tileNames = {"tile-000.png", "tile-001.png"}
-- Variables globales para la imagen de fondo y sus datos, así como para la imagen de tile
local fondo
local fondoData
local tile
local tileWidth, tileHeight = 16, 16
local a1Speed = 1
local a1Direction = 1
local a1Position = 0
local distanciaRecorrida = 0
-- Variable para almacenar los FPS
local fps = 0
function love.load()
-- Cargar imagen de fondo (a1)
fondo = love.graphics.newImage("a1.png")
fondo:setFilter("nearest", "nearest")
-- Crear ImageData para la imagen de fondo
fondoData = love.image.newImageData("a1.png")
-- Cargar imagen de tile aleatoria
seleccionarTileAleatorio()
end
function love.update(dt)
-- Actualizar posición de a1
a1Position = a1Position + a1Speed * a1Direction
-- Verificar si a1 ha avanzado 16 píxeles
distanciaRecorrida = distanciaRecorrida + a1Speed
if distanciaRecorrida >= 16 then
-- Cambiar dirección
a1Direction = -a1Direction
-- Pegar el tile en 16 posiciones aleatorias
for i = 1, 4000 do
local x = love.math.random(0, 320 - tileWidth * 4)
local y = love.math.random(0, 240 - tileHeight * 4)
pegarTileEnFondo(x, y)
end
-- Reiniciar la distancia recorrida
distanciaRecorrida = 0
-- Seleccionar un nuevo tile aleatorio
seleccionarTileAleatorio()
end
-- Actualizar los FPS
fps = love.timer.getFPS()
end
function love.draw()
-- Dibujar la imagen de fondo a1
love.graphics.draw(fondo, a1Position, 0, 0, 4, 4)
-- Dibujar los FPS en la esquina superior izquierda
love.graphics.print("FPS: " .. fps, 10, 10)
end
function pegarTileEnFondo(x, y)
-- Crear ImageData para el tile actual
local tileData = love.image.newImageData(tile)
-- Copiar los píxeles de la nueva imagen a la ImageData principal
for i = 0, tileWidth - 1 do
for j = 0, tileHeight - 1 do
local r, g, b, a = tileData:getPixel(i, j)
fondoData:setPixel(x + i, y + j, r, g, b, a)
end
end
-- Actualizar la imagen de fondo con los nuevos datos
fondo = love.graphics.newImage(fondoData)
end
function seleccionarTileAleatorio()
-- Seleccionar un nombre de tile aleatorio de la lista
tile = tileNames[love.math.random(1, #tileNames)]
end