【算法】象山十三张手牌分析代码

本文介绍了一个象山十三张扑克牌游戏的算法实现,详细阐述了项目需求和游戏规则,包括牌型大小排序及花色比较。通过将扑克牌从2到A分别赋值,作者给出了分析十三张手牌并找出所有可能牌型的代码片段。
摘要由CSDN通过智能技术生成

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值