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