【发布时间】:2016-02-14 21:34:44
【问题描述】:
如何对 2 个列表 y 位置(地图图块和人员)进行排序,并按照 y 的相关顺序绘制它们。我想使用 2 个列表:
map = {}
map.y = {60,10,40,80}
map.t = {0,0,1,1} -- type
people = {}
people.y = {0,100}
people.t = {0,1} -- type
我目前可以排序和绘制一个英雄和盒子列表。 排序/绘制代码:
box1 = love.graphics.newImage("box1.png")
box2 = love.graphics.newImage("box2.png")
box3 = love.graphics.newImage("box3.png")
hero = love.graphics.newImage("hero.png")
object = {
x = {0, 50,100,200},
y = {0,200, 50,100},
g = {0,1,2,3}
}
function sortIndex(item)
local i
local id = {} -- id list
for i = 1, #item.x do -- Fill id list (1 to length)
id[i] = i
end
-- print( unpack(id) ) -- Check before
table.sort(id,sortY)-- Sort list
-- print( unpack(id) ) -- Check after
item.sort = id -- List added to object.sort
-- Sort id, using item values
function sortY(a,b)
return item.y[a] < item.y[b]
end
end
function drawObject()
local i,v, g,x,y
for i = 1, #object.x do
v = object.sort[i] -- Draw in order
x = object.x[v]
y = object.y[v]
g = object.g[v]
if g == 0 then g = hero -- set to an image value
elseif g == 1 then g = box1
elseif g == 2 then g = box2
elseif g == 3 then g = box3
end
love.graphics.draw(g,x,y,0,7,7)
end
end
更新排序:
sortIndex(object)
我的函数对id 列表进行排序,比较y 位置列表。 id 用于按照对象y 的顺序绘制对象。如何将 2 个 id 列表排序在一起,比较 2 个 y 位置列表,然后按顺序绘制它们?
也许在绘制时,从地图图块切换到依赖y 的人,但我不知道如何。
【问题讨论】: