• 【设为首页】
  • 【收藏闪客居】
当前位置:主页>FLASH AS 编程>AS游戏篇>文章内容
  • 牌类游戏中取出顺子的算法(as2.0)
  • 来源:羽柴|鬼铃-blog 作者:羽柴 2007-12-01 【
 //一直忙啊,都好长时间没写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("抽取后剩下的散牌="+调试点数);






上一篇:游戏连连看算法   下一篇:不到80行代码的基本翻牌游戏(as2.0)
  • 用户名:新注册) 密码: 匿名评论
  • 评论内容:(不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规)

Copyright © 2006-2008 flashas.net All Rights Reserved.
网站内容咨询: admin#flashas.net (#为@) 联系QQ:40777822 浙ICP备06033001号
(本网站最佳浏览解析度为1024*768, 建议使用IE 6.0或以上版本浏览器。)