13张扑克游戏:【算法】象山十三张手牌分析代码

项目需求:
    在每位玩家初始化的时候,拥有十三张牌。分别为同一幅扑克牌中去掉大小王,随机获取的。需要将十三张牌中所隐含的所有的牌型全部找出,以便进行快速匹配。
游戏规则:
    每个人需将手中的十三张牌分成头墩、中墩以及尾墩三堆牌,分别为三张、五张、五张。要求后面的墩牌比前面的墩牌大。
牌型大小:
    首先,按牌面数字大小排序。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

相关推荐

相关文章