骰子游戏根据总数随机显示骰子值[反算法]

在开发网络版关于 1-2颗骰子游戏过程中,经常会出现这样的情况。服务端随机取了骰子的总数,在客户端得根据这个骰子总数随机分配。1颗骰子当然就没必要了。 主要是2颗骰子
比如: 服务端发来骰子和: 8点   客户端的2颗骰子就要随机显示,  有可能1,7  2,6    3,5   4,4   5,3  6,2   7,1 这样的结果。现在把算法列出来。

//==============算法如下====================
function 计算骰子值(总值, 骰子数) {
    var 骰子值 = new Array();
    if (骰子数 == 1) {
        骰子值 = [总值, 0];
    } else if (骰子数 == 2) {
        if (总值>6) {
            var 随机最小值 = 总值-6;
            var 随机最大值 = 6;
            if (随机最小值 == 随机最大值) {
                var ran值 = 6;
                骰子值 = [ran值, 总值-ran值];
            } else {
                var ran值 = random(6-随机最小值)+随机最小值;
                骰子值 = [ran值, 总值-ran值];
            }
        } else {
            var 随机最小值 = 1;
            var 随机最大值 = 总值;
            if (总值 == 6) {
                随机最大值 = 5;
            }
            //trace("随机最小值="+随机最小值)
            //trace("随机最大值="+随机最大值)
            //trace(随机最大值-随机最小值+1)
            var ran值 = random(随机最大值-随机最小值)+随机最小值;
            骰子值 = [ran值, 总值-ran值];
        }
    }
    //trace("骰子值="+骰子值);    
    return 骰子值;
}
//========================调试方法======================
for (var i = 0; i<1000; i++) {
    var 总值 = random(11)+2;
    var 骰子值 = 计算骰子值(总值, 2);
    var OK = "不成立";
    if (总值 == 骰子值[0]+骰子值[1] && 骰子值[0]>0 && 骰子值[0]<7 && 骰子值[1]>0 && 骰子值[1]<7) {
        OK = "成立";
    }
    trace("总值="+总值+" 骰子值="+骰子值+" "+OK);
    if (OK=="不成立") {
        trace("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
        //trace("总值="+总值+" 骰子值="+骰子值+" "+OK);
    }
}
//=====================================
//
//转载请注明出处:羽柴 鬼铃-blog  www.ycflash.com/blog
//
//=====================================


文章来自: 本站原创
引用通告: 查看所有引用 | 我要引用此文章
Tags:
相关日志:
评论: 0 | 引用: 0 | 查看次数: 1168
发表评论
你没有权限发表评论!