2848简易核心运算
--多元素合并数组举例4*4
-- 星空露珠韩永旗制作
--数据合并并重新赋值
--多元素合并数组举例4*4
-- 星空露珠韩永旗制作
--数据合并并重新赋值
local data={{0,2,0,2},
{4,2,0,8},
{8,0,8,4},
{2,2,4,8}}
local ch={{1,4,1},{4,1,-1},{1,4,1},{4,1,-1}}
local dc={'向左', '向右', '向上', '向下',}
local dr=3 --仅供1-上,2-下,3-左,4-右,移动local function add(dr)
local da={}
if dr<=2 then
for i=ch[dr][1],ch[dr][2],ch[dr][3] do
local tbl={}
for j=ch[dr][1],ch[dr][2],ch[dr][3] do
if data[i][j]~=0 then tbl[#tbl+1]=data[i][j] end
end
for k,v in pairs(tbl) do
if v==tbl[k+1] then tbl[k]=2*tbl[k] table.remove(tbl,k+1) end
end
for j=ch[dr][1],ch[dr][2],ch[dr][3] do
if #tbl==0 then data[i][j]=0
else
data[i][j]=tbl[1] table.remove(tbl,1)
end
end
end
else
for j=ch[dr][1],ch[dr][2],ch[dr][3] do
local tbl={}
for i=ch[dr][1],ch[dr][2],ch[dr][3] do
if data[i][j]~=0 then tbl[#tbl+1]=data[i][j] end
end
for k,v in pairs(tbl) do
if v==tbl[k+1] then tbl[k]=2*tbl[k] table.remove(tbl,k+1) end
end
for i=ch[dr][1],ch[dr][2],ch[dr][3] do
if #tbl==0 then data[i][j]=0
else
data[i][j]=tbl[1] table.remove(tbl,1)
end
end
end
end
end
print(dc[dr]..'移动前')
for k,v in pairs(data) do
print(table.unpack(v))
end
add(dr)
print(dc[dr]..'移动后')
for k,v in pairs(data) do
print(table.unpack(v))
end