项目需求:
在每位玩家初始化的时候,拥有十三张牌。分别为同一幅扑克牌中去掉大小王,随机获取的。需要将十三张牌中所隐含的所有的牌型全部找出,以便进行快速匹配。
游戏规则:
每个人需将手中的十三张牌分成头墩、中墩以及尾墩三堆牌,分别为三张、五张、五张。要求后面的墩牌比前面的墩牌大。
牌型大小:
首先,按牌面数字大小排序。2,3,4,,,A。其次,比较花色。黑 > 红 > 梅 > 方。牌型共有:乌龙,对子,三条,两对,葫芦,炸弹,同花,顺子,同花顺,共九种。大小依次递增。
扑克牌的实现方式:
从“方片2,梅花2,红桃2,黑桃2,方片3,,,,黑桃A”分别赋值为 : 0,1,2,3,,,51
废话少说,直接上代码:
// 测试案例,生成13张随机的牌
test:function(){
var cards = [];
for(var i= 0 ;i<13;i++){
var _temp = Math.floor( Math.random()*52);
cards.indexOf(_temp)<0?cards.push( _temp ):i--;
}
console.log(cards);
return cards;
}
// 返回对子
getDuizi:function(cards){
// @params: cards 为后台发回来的牌组
// 长度判断,暂不做
var result = [];
var numbers = classifyCard(cards).numbers;
// 得到对子
numbers.forEach(function(data ,i){
if( data.length == 2 ){
// 表明有对子
result.push( [ data[0]+4*i ,data[1]+4*i ] );
}
if( data.length == 3 ){
result.push(
[ data[0]+4*i ,data[2]+4*i ],
[ data[0]+4*i ,data[1]+4*i ],
[ data[1]+4*i ,data[2]+4*i ]
);
}
if( data.length == 4 ){
result.push(
[ data[0]+4*i ,data[1]+4*i ],
[ data[0]+4*i ,data[2]+4*i ],
[ data[0]+4*i ,data[3]+4*i ],
[ data[1]+4*i ,data[2]+4*i ],
[ data[1]+4*i ,data[3]+4*i ],
[ data[2]+4*i ,data[3]+4*i ]
);
}});
return result;
}
// 返回三条
getSantiao:function(cards){
var result = [];
var numbers = classifyCard(cards).numbers;
numbers.forEach(function(data,i){
if( data.length == 3 ){
result.pu