加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

寒風的Cocos之旅之Lua篇---2048移动块的机制

发布时间:2020-12-14 16:52:09 所属栏目:百科 来源:网络整理
导读:用Lua又写了遍2048.这回发现比之前写的更快了。在上下左右移动块的上边,例如像左移动:那么需要遍历的则 是x轴方向。并且是跟移动方向相反的向右进行遍历。此时定义一个对象,记录向右遍历的第i个的值,记录后将此值 赋给它左边的那个值(这里说的通俗些,坑

用Lua又写了遍2048.这回发现比之前写的更快了。在上下左右移动块的上边,例如像左移动:那么需要遍历的则

是x轴方向。并且是跟移动方向相反的向右进行遍历。此时定义一个对象,记录向右遍历的第i个的值,记录后将此值

赋给它左边的那个值(这里说的通俗些,坑了勿喷!)最后代码呈上。有需要的可留言,可以找我要代码一起学习。

function GameScene:leftCombineNumber()
    if (isPlay == false) then
        return true
    end
    
    local card
    local nextCard
    for j = 0,3 do
        for i = 0,3 do
            card = cardList[i..":"..j]
            if(card:getData() ~= 0) then
                local k = i+1
                while(k < 4) do
                    nextCard = cardList[k..":"..j]
                    if (nextCard:getData() ~=0) then
                        if(card:getData() == nextCard:getData()) then
                            card:setNum(card:getData()*2)
                            nextCard:setNum(0)
                            totalScore = totalScore+card:getData()
                        end 
                        k = 4
                        break
                    end   
                    k = k + 1 
                end
            end
        end
    end
    
     for j = 0,3 do
            card = cardList[i..":"..j]
            if(card:getData() == 0) then
                local k = i+1
                while(k < 4) do
                    nextCard = cardList[k..":"..j]
                    if (nextCard:getData() ~=0) then
                        card:setNum(nextCard:getData())
                        nextCard:setNum(0)
                        k = 4
                    end   
                    k = k + 1 
                end
            end
        end
    end
    self:updateNumber()
end

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读