Lua--棋牌游戏开发(概念性设计二

Lua–棋牌游戏开发(概念性设计二)

1:获取"棋牌工具.lua"文件,文件后return CardUtils

参考上一篇博文链接Lua–棋牌游戏开发(概念性设计一)

local CardUtils = require "棋牌工具" -- 加载文件

2:牌的类型定义
local CardsType = 
{
   
    -- 键值对 = 值
    Single = 1, -- 单张
    DuiZi = 2, -- 对子
    ShunZi = 3, -- 顺子
    LianDui = 4, -- 连对
    Three = 5, -- 三张
    ThreeTakeOne = 6, -- 三带一
    ThreeTakeTwo = 7, -- 三带二
    FourTakeTwo = 8, -- 四带二
    FeiJi = 9, -- 三张(333444/三张带一(33344455/33344445/三带二(3334445566)
    Boom = 10, -- 炸弹
    BoomBoom = 11, -- 王炸
    None = 12 -- 不符合牌型
}
3:记牌器:将选中的牌转换成(牌值对应数量的键值对)
local DDZLogic = {
   }

function DDZLogic:toCardMap(selectedCards)
    local map = {
   }
    -- 键值size对应选中牌的数量
    map.size = #selectedCards
    for i = 1,20 do
        map[i] = 0
    end

    for i = 1,#selectedCards do
        local value = CardUtils:getCardValue(selectedCards[i])
        map[value] = map[value] + 1
    end
    return map
end

4:判断是否是单张

function DDZLogic:isSingle(cards) -- cards:记牌后的结果
    return 1 == cards.size
end
5:判断是否是对子
function DDZLogic:isDuiZi(cards)
    -- 判断张数
    if cards.size ~= 2 then
        return false
    end

    -- 遍历所有的牌值对应的数量,如果不等于0,判断是否等于2
    for i = 1,20 do
        local cardNum = cards[i] -- 得到当前牌值对应的数量
        if cardNum ~= 0 then
            return 2 == cardNum
        end
    end
end
6:判断是否是顺子
function DDZLogic:isShunZi(cards)
    if
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值