鬥地主分析牌

--分析牌,單牌,對子,三張,炸彈分別放入不同的列表,方便提示出牌
--前提是首先按排值從小到大已經排好序
function GameLogic:AnalysesCards(tabCardData, cbCardCount)
    local tagAnalysesResult = { -- tagAnalysesResult[1].cbTotalSameCnt 單牌數量,tagAnalysesResult[1].tabSameCards 存放的單牌
        { cbTotalSameCnt = 0, tabSameCards = { } },{ cbTotalSameCnt = 0, tabSameCards = { } },
        { cbTotalSameCnt = 0, tabSameCards = { } },{ cbTotalSameCnt = 0, tabSameCards = { } }
    }
    local cbCurCard = 0
    local cbSameCount = 0
    for i = 1, cbCardCount do
        if cbCurCard == 0 then
            cbCurCard = tabCardData[i]
            cbSameCount = 1
        else
            tagAnalysesResult[cbSameCount].cbTotalSameCnt = tagAnalysesResult[cbSameCount].cbTotalSameCnt + 1
            local cbTotalSameCnt = tagAnalysesResult[cbSameCount].cbTotalSameCnt
            local tabCardList = { }
            for j = i - cbSameCount, i - 1 do
                table.insert(tabCardList, tabCardData[j])
            end
            tagAnalysesResult[cbSameCount].tabSameCards[cbTotalSameCnt] = tabCardList
            if self:GetCardLogicValue(cbCurCard) ~= self:GetCardLogicValue(tabCardData[i]) then
                cbCurCard = tabCardData[i]
                cbSameCount = 1
            else
                cbSameCount = cbSameCount + 1
            end
            
            if i == cbCardCount then
                tagAnalysesResult[cbSameCount].cbTotalSameCnt = tagAnalysesResult[cbSameCount].cbTotalSameCnt + 1
                local cbTotalSameCnt = tagAnalysesResult[cbSameCount].cbTotalSameCnt
                local tabCardList = { }
                for j = i - cbSameCount + 1, i do
                    table.insert(tabCardList, tabCardData[j])
                end
                tagAnalysesResult[cbSameCount].tabSameCards[cbTotalSameCnt] = tabCardList
            end
        end
    end
    print("---------------------------------") --打印單牌(對子,三張,炸彈分別也拆一張放入該列表)
    for i = 1, tagAnalysesResult[1].cbTotalSameCnt do
        for j = 1, #tagAnalysesResult[1].tabSameCards[i] do
            print(tagAnalysesResult[1].tabSameCards[i][j])
        end
    end
    print("---------------------------------") --打印對牌(三張,炸彈分別也拆一對放入該列表)
    for i = 1, tagAnalysesResult[2].cbTotalSameCnt do
        print("#tagAnalysesResult[2].tabSameCards[i] = "..#tagAnalysesResult[2].tabSameCards[i])
        for j = 1, #tagAnalysesResult[2].tabSameCards[i] do
            print(tagAnalysesResult[2].tabSameCards[i][j])
        end
    end
    print("---------------------------------") --打印三張(炸彈也拆三張放入該列表)
    for i = 1, tagAnalysesResult[3].cbTotalSameCnt do
        print("#tagAnalysesResult[3].tabSameCards[i] = "..#tagAnalysesResult[3].tabSameCards[i])
        for j = 1, #tagAnalysesResult[3].tabSameCards[i] do
            print(tagAnalysesResult[3].tabSameCards[i][j])
        end
    end

    print("---------------------------------") -- 打印炸彈
    for i = 1, tagAnalysesResult[4].cbTotalSameCnt do
        print("#tagAnalysesResult[4].tabSameCards[i] = "..#tagAnalysesResult[4].tabSameCards[i])
        for j = 1, #tagAnalysesResult[4].tabSameCards[i] do
            print(tagAnalysesResult[4].tabSameCards[i][j])
        end
    end
    return tagAnalysesResult
end 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章