瞎猫的JavaScript 斗地主算法封装
var doudizhu = require('doudizhu')
记录并返回1副乱序id的扑克牌数组
doudizhu.getShuffleCards()
/*
[ 15, 43, 49, 21, 51, 40, 23, 14, 25, 5, 4, 44, 3, 32, 53, 11, 41, 27, 7, 18, 38, 28, 8, 31, 17, 36, 42, 26, 47, 45, 22, 12, 34, 16, 2, 9, 1, 35, 52, 10, 20, 30, 29, 46, 13, 0, 6, 39, 48, 24, 19, 37, 33, 50 ]
*/
返回上次洗牌完成后的1副扑克牌数组(未洗过牌则为空数组)
doudizhu.getCards()
/*
[ 15, 43, 49, 21, 51, 40, 23, 14, 25, 5, 4, 44, 3, 32, 53, 11, 41, 27, 7, 18, 38, 28, 8, 31, 17, 36, 42, 26, 47, 45, 22, 12, 34, 16, 2, 9, 1, 35, 52, 10, 20, 30, 29, 46, 13, 0, 6, 39, 48, 24, 19, 37, 33, 50 ]
*/
返回1个对象记录4组牌:3组17张的随机牌、1组3张的地主牌
doudizhu.dealCards()
/*
{
player1: [ 15, 21, 23, 5, 3, 11, 7, 28, 17, 26, 22, 16, 1, 10, 29, 0, 48 ],
player2: [ 43, 51, 14, 4, 32, 41, 18, 8, 36, 47, 12, 2, 35, 20, 46, 6, 24 ],
player3: [ 49, 40, 25, 44, 53, 27, 38, 31, 42, 45, 34, 9, 52, 30, 13, 39, 19 ],
leaveCards: [ 37, 33, 50 ]
}
*/
接收1个扑克牌id数组(可乱序),返回1个牌信息对象
如果出牌不合规则则返回 false
doudizhu.getCardType([8,12,16,20,24])
/*
{
cardType: 'DAN_SHUN_ZI', // 牌型别名
cardTypeWeight: 1, //牌类型权重
groupCardsWeight: 1 // 当前扑克牌组权重
}
*/
接收2个扑克牌id数组(可乱序),返回两个牌的比较结果
若第二组牌可压第一组则返回 true
不可压或者牌不合法则返回 false
doudizhu.beat([8,12,16,20,24], [12,16,20,24,28])
/*
true
*/
对给定的数组进行排序,按照从小到大,返回排序后的数组
传入数组元素必须为非负整数,否则返回 false
不限制数组元素大小,不限制数组元素不重复
注意:此排序为直接影响修改原数组
不可直接对当前的整副扑克牌数组对象进行排序,防止造成变量污染,故对此行为进行了异常抛出处理
doudizhu.sort([34, 6, 2, 8, 22])
/*
[ 2, 6, 8, 22, 22, 34 ]
*/
对给定的数组,根据牌权重、花色权重对牌进行排序
一般用于排列玩家手牌排序呈现
传入数组元素应该为小于54的非负整数,不可重复,否则返回false
注意:此排序为直接影响修改原数组
不可直接对当前的整副扑克牌数组对象进行排序,防止造成变量污染,故对此行为进行了异常抛出处理
doudizhu.weightSort([34, 6, 2, 8, 22, 53])
/*
[ 8, 22, 34, 2, 6, 53 ]
*/