--[[
题目:斗地主
1.初始化卡牌
2.洗牌
3.选牌
4.分发牌到3个玩家手里
]]
--定义所有卡牌
local cards = {
[1]="黑桃A",
[2]="黑桃2",
[3]="黑桃3",
[4]="黑桃4",
[5]="黑桃5",
[6]="黑桃6",
[7]="黑桃7",
[8]="黑桃8",
[9]="黑桃9",
[10]="黑桃10",
[11]="黑桃J",
[12]="黑桃Q",
[13]="黑桃K",
[14]="红桃A",
[15]="红桃2",
[16]="红桃3",
[17]="红桃4",
[18]="红桃5",
[19]="红桃6",
[20]="红桃7",
[21]="红桃8",
[22]="红桃9",
[23]="红桃10",
[24]="红桃J",
[25]="红桃Q",
[26]="红桃K",
[27]="梅花A",
[28]="梅花2",
[29]="梅花3",
[30]="梅花4",
[31]="梅花5",
[32]="梅花6",
[33]="梅花7",
[34]="梅花8",
[35]="梅花9",
[36]="梅花10",
[37]="梅花J",
[38]="梅花Q",
[39]="梅花K",
[40]="方片A",
[41]="方片2",
[42]="方片3",
[43]="方片4",
[44]="方片5",
[45]="方片6",
[46]="方片7",
[47]="方片8",
[48]="方片9",
[49]="方片10",
[50]="方片J",
[51]="方片Q",
[52]="方片K",
[53]="大王",
[54]="小王",
}
--定义玩家A
local A={}
--定义玩家B
local B={}
--定义玩家C
local C={}
--定义牌的顺序
local cardlist = {}
--初始化牌,0~54到list
local function InitCard(cardlist)
for i=1, 54 do
table.insert(cardlist,i)
end
end
--获取详细卡牌数据
local function GetCardDetail(num)
if num <= 0 or num > 54 then return nil end
return cards[num]
end
--选牌
--随机卡牌index
--移除卡牌index
--返回卡牌index
local function SelectCard(cardlist)
if #cardlist==0 then return -1 end
--随机种子
math.randomseed( os.time() ) math.random()
local cardNum = math.random(1,#cardlist)
local result = cardlist[cardNum]
table.remove(cardlist,cardNum)
return result,#cardlist
end
--发牌,每人17张
local function faPai()
for i = 1, 17, 1 do
--给玩家A发牌
local result1, num = SelectCard(cardlist)
table.insert(A,result1)
--给玩家B发牌
local result2, num = SelectCard(cardlist)
table.insert(B,result2)
--给玩家C发牌
local result3, num = SelectCard(cardlist)
table.insert(C,result3)
end
end
--打印玩家A的牌
local function printA()
for index, value in ipairs(A) do
print("A = ", GetCardDetail(value) )
end
end
local function printB()
--打印玩家B的牌
for index, value in ipairs(B) do
print("B = ", GetCardDetail(value) )
end
end
local function printC()
--打印玩家C的牌
for index, value in ipairs(C) do
print("C = ", GetCardDetail(value) )
end
end
--打印底牌
local function DiPai()
for index, value in ipairs(cardlist) do
print("剩下三张牌 = ", GetCardDetail(value) )
end
end
--初始化卡牌
InitCard(cardlist)
--发牌
faPai()
--打印玩家A
printA()
--打印玩家A
printB()
--打印玩家A
printC()
--底牌
DiPai()