牌类游戏中取出顺子的算法

资讯 驱动中国 somesun 635 次阅读 0 条评论
分享 Q

//一直忙啊,都好长时间没写BLOG了,今天刚写到一个自动从一套牌中取出顺子的算法就贴上来吧。
//以下用斗地主作为例子: 把代码贴到FLASH中导出即可看到效果,只限FLASH8  AS2版本
散牌组 = [[17, 4], [12, 3], [15, 0], [14, 2], [14, 3], [10, 3], [5, 3], [11, 3], [12, 1], [3, 0], [8, 0], [15, 3], [6, 3], [13, 1], [14, 1], [7, 2], [4, 3], [10, 1], [15, 2]];
散牌组.sortOn(0, 1 | 16);
顺子牌组 = new Array();
//建立调试点数
调试点数 = new Array();
for (var i = 0; i<散牌组.length; i++) {
    调试点数.push(散牌组[i][0]);
}
trace("原牌组="+调试点数);
for (var i = 0; i<散牌组.length-5; i++) {
    //用来记录合格的编号
    var 编号数组 = new Array();
    //追加值用来判断如果成对的跳跃判断数
    var 跳跃值 = 0;
    for (var j = 0; j<散牌组.length-i; j++) {
        //trace(散牌组[i+j][0]+"=="+(散牌组[i+j+1][0]-1+跳跃值)+" 跳跃值="+跳跃值);
        if (散牌组[i+j][0]+跳跃值 == 散牌组[i+j+1][0]+跳跃值 && 散牌组[i+j+1][0]<=15) {
            跳跃值++;
        } else if (散牌组[i+j][0]+跳跃值 == 散牌组[i+j+1][0]-1+跳跃值 && 散牌组[i+j+1][0]<=15) {
            编号数组.push(i+j);
        } else {
            break;
        }
    }
    if (编号数组.length>=5) {
        var 临时牌组 = new Array();
        var 减编号 = 0;
        for (var j = 0; j<编号数组.length; j++) {
            var 删除值 = 散牌组.splice(编号数组[j]-减编号, 1);
            减编号++;
            临时牌组.push(删除值[0]);
        }
        顺子牌组.push(临时牌组);
        i = 0;
    }
}
trace("抽取的组队数="+顺子牌组.length);
trace("=============处理取牌后的结果=========");
for (var n = 0; n<顺子牌组.length; n++) {
    调试点数 = new Array();
    for (var i = 0; i<顺子牌组[n].length; i++) {
        调试点数.push(顺子牌组[n][i][0]);
    }
    trace("顺子牌组"+n+"="+调试点数);
}
调试点数 = new Array();
for (var i = 0; i<散牌组.length; i++) {
    调试点数.push(散牌组[i][0]);
}
trace("抽取后剩下的散牌="+调试点数);

版权声明:本文由驱动中国整理发布,转载需注明出处与原文链接。如有疑问请联系 editor@qudong.com
本文价值 成为第一个评分的人
登录后为本文打分
网友评论0 条评论
正在回复 的评论取消
评论加载中…
🔐

登录后参与互动

评论、点赞均可赚积分
连续签到、邀请好友也有奖励 🎁

电脑端: 微信扫码登录 微信内: 一键登录

微信扫一扫

打开微信「扫一扫」,分享本文到朋友圈或好友