local cols = 4 -- number of columns local rows = 9 -- number of rows local blockSize = 35 -- size of blocks local blocks = {} -- table of blocks on screen local gridTable = {} -- table of open slots local ready = true -- ready for next block local count = 1 local grid ={} function setupGrid() for c = 0, cols do gridTable[c] = {} for r = 0, rows do gridTable[c][r] = 0 end end end function moveBlockDown(obj) local c,r = obj.loc[1], obj.loc[2] local newy = obj.y + blockSize obj.loc[1] = c obj.loc[2] = r+1 if gridTable[c+1][r+1] == 0 then transition.to(obj, {time = 500, y = newy, onComplete = function() obj.y = newy moveBlockDown(obj) end}) else -- add a little bounce newy = obj.y - blockSize/7 transition.to( obj, { time = 100, y = newy, onComplete = function() newy = obj.y+blockSize/7 transition.to( obj, { time = 100, y = newy }) end}) --set gridTable to 1 gridTable[c+1][r] =1 ready = true end end function newBlock() pick = math.random(0,cols-1) if gridTable[1][1] == 0 then ready = false -- prevents new block until done with prev. block block1= display.newRect(0,0, blockSize , blockSize) block1.x =pick\*35+100 block1.y =100 block1:setFillColor(0, 0, 166) blocks[#blocks+1] = block1 block1.loc = {pick ,0} block2 = display.newRect(0,0, blockSize , blockSize ) block2.x = pick\*35-35+100 block2.y = 65+35 block2:setFillColor(255, 0, 0) blocks[#blocks+1] = block2 block2.loc = {pick , 0} obj = blocks[#blocks] print("move "..#blocks) moveBlockDown(block1) moveBlockDown(block2) --moveBlockDown(blocks[#blocks]) elseif gridTable[pick+1][1] == 1 then print("picking new start") newBlock() end end -- call setupGrid setupGrid() -- this is just here to produce new blocks function callNewBlock() if ready == true and count \< 25 then --rows\*cols then count = count + 1 newBlock() callNewBlock() elseif ready == false and count \< 25 then--rows\*cols then timer.performWithDelay(250, callNewBlock) else print("done") end end -- start calling new block callNewBlock()
Why my blocks will overlap together , is the moveBlockDown() newy problem ?