骰子游戏根据总数随机显示骰子值[反算法]
作者:admin 日期:2009-05-01
在开发网络版关于 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
//
//=====================================
比如: 服务端发来骰子和: 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
//
//=====================================
评论: 0 | 引用: 0 | 查看次数: 1168
发表评论
你没有权限发表评论!
上一篇
下一篇

文章来自:
Tags: 





