В общем было скучно, я написал вот такой скрипт абсолютно рандомных текстур (или шум), а так же загрузка карты с изображения (Если вы вдруг не хотите пользоваться сторонними редакторами или писать свой, а так же не псих который огромные карты "рисует" кодом)
Код
math.randomseed(os.clock()*math.random(1,math.random(1,10000))) gr = love.graphics win = love.window lk = love.keyboard wi, he = win.getMode()
require("ratexture")
function love.load() num = 5 --Вариантивность текстур tex_w, tex_h = 16, 16 --Ширина, высота рандом текстур texture = texture_generate(num,tex_w,tex_h) imageData = love.image.newImageData("map.png") tabl = {} for y=0, imageData:getHeight()-1 do table.insert(tabl, {}) for x=0, imageData:getWidth()-1 do local r,g,b,a = imageData:getPixel( x, y ) if r == 100 and g == 100 and b == 100 then --Камешек table.insert(tabl[y+1], {3,math.random(1,num)}) elseif r == 0 and g == 255 and b == 0 then --трава table.insert(tabl[y+1], {2,math.random(1,num)}) elseif r == 255 and g == 255 and b == 0 then --песок table.insert(tabl[y+1], {4,math.random(1,num)}) elseif r == 106 and g == 88 and b == 44 then --грязь table.insert(tabl[y+1], {1,math.random(1,num)}) else table.insert(tabl[y+1], false) -- пустота end end end end
function love.update(dt)
end
function love.draw() gr.setBackgroundColor(255,255,255) for y=1, #tabl do for x=1, #tabl[y] do if tabl[y][x] then love.graphics.draw(texture[tabl[y][x][1]][tabl[y][x][2]],(x-1)*tex_w ,(y-1)*tex_h,0,1,1) end end end end
function love.mousepressed(x, y, button)
end
function love.keypressed(key)
end
function love.textinput (t)
end
function love.quit()
end
Код
--by sfabrikan
function texture_generate(num,xt,yt) local r = math.random local table_texture = {{}, {}, {}, {}} --1.dirt 2.grass 3.stone 4.sand local imgdatas = {{},{},{},{}} for k = 1, #table_texture do for i = 1, num do local datatext = {} for y = 1, yt do table.insert(datatext, {}) for x = 1, xt do table.insert(datatext[y], r(50,150)) end end table.insert(imgdatas[k], love.image.newImageData(#datatext[1],#datatext)) for y = 0, #datatext-1 do for x = 0, #datatext[1]-1 do local t = datatext[y+1][x+1] if k == 1 then -- dirt imgdatas[k][i]:setPixel(x, y, t, t/2, 0) elseif k == 2 then -- grass imgdatas[k][i]:setPixel(x, y, 30, 50+t, 0) elseif k == 3 then -- stone imgdatas[k][i]:setPixel(x, y, t, t, t) elseif k == 4 then -- sand imgdatas[k][i]:setPixel(x, y, 100+t, 100+t, 30) end end end table.insert(table_texture[k], love.graphics.newImage(imgdatas[k][i])) table_texture[k][i]:setFilter('nearest','nearest') end end return table_texture end