作者laechan (小太保)
看板mud
标题Re: [闲聊] 乐透系统
时间Tue Jan 22 23:07:14 2013
聊点相关的。
假设 n 个玩家,第一个玩家签 m1 组,第二个玩家签 m2 组,
.....,第 n 个玩家签 mn 组。
mapping player_dbase=([
"玩家1":({ ({所签号码组1}),({所签号码组2}),... }),
"玩家2":({ ({所签号码组1}),({所签号码组2}),... }),
.
.
"玩家n":({ ({所签号码组1}),({所签号码组2}),... }),
]);
而开出的奖号组假设为 numbers=({1,2,3,4,5,6,1});
宣告一个 mapping award_dbase=([]);
而得奖的基本条件是前 6 个号码至少中 2 个,後面中 1 个
,或前 6 个号码至少中 3 个。
players=keys(player_dbase);
foreach(player in players)
{
award_dbase[player]=({});
tmps=player_dbase[player];
n1=0;
n2=0;
foreach(sub_tmps in tmps)
{
for(i=0;i<6;i++)
if(member_array(numbers[i],sub_tmps)!=-1)
n1++;
if(numbers[6]==sub_tmps[6])
n2=1;
// n1: 所签的某一组号码, 第一组区六个号码中几个
// n2: 所签的某一组号码, 第二组区的号码有没有中
// 当玩家所签的这组完全摃龟 continue;
if(n1<2 || (n1<3 && n2!=1))
continue;
// 储存玩家该组的 n1 n2
award_dbase[player]+=({ ({n1,n2}) });
}
}
「因为摃龟多」,所以大部份在 if(n1<2 || (n1<3 && n2!=1))
这里就会 continue (abort) 掉。
上面跑完就会得到 award_dbase 资料库。
players=keys(award_dbase);
foreach(player in players)
{
tmps=award_dbase[player];
foreach(sub_tmps in tmps)
{
n1=sub_tmps[0];
n2=sub_tmps[1];
switch(n1)
{
case 6:
if(n2==1)
{
得头奖;
头奖人数+1;
}
else
{
得X奖;
X奖人数+1;
}
break;
.
.
}
}
}
一般我的习惯会用两段的回圈,先把 player_dbase 做个
资料前处理(资料过滤),再对留存下来的资料做奖金计算
前提就是「摃龟多」。
分两段还有一个好处,我的话,有时我会先跑完一段,然
後 call_out 另一个函数隔几秒後处理另一段。
--
※ 发信站: 批踢踢实业坊(ptt.cc)
※ 编辑: laechan 来自: 1.165.164.2 (01/22 23:32)
1F:推 kyoe :其实我只是想赚文章数我想发sex!!! 111.240.22.89 01/22 23:37
申请 mud_ky 板比较快唷~
※ 编辑: laechan 来自: 1.165.164.2 (01/22 23:48)
2F:推 kyoe :if(numbers[6]==sub_tmps[6])这句 111.240.22.89 01/22 23:48
这是对第二区(号码 1~8)的奖号。
※ 编辑: laechan 来自: 1.165.164.2 (01/23 00:00)
3F:推 kyoe :喔那是威力彩-.- 111.240.22.89 01/23 00:06
4F:推 kyoe :要开连署要po文200篇-.-淦 111.240.22.89 01/23 10:56
5F:→ laechan :不一定要你连署,可参考mud_mars模式 210.61.157.53 01/23 11:37
6F:推 kyoe :mars也是连署开新版的阿? 1.163.12.224 01/23 11:40
7F:→ laechan :发起连署者并非目前 mars' adm eplis 210.61.157.53 01/23 12:07
8F:推 kyoe :Q_Q 1.163.12.224 01/23 12:08
9F:推 eplis :因为我文章数不够,另请玩家帮发起 42.71.143.112 01/23 12:38
10F:推 kyoe :申请好严苛..要30个200篇的连署... 1.163.12.224 01/23 12:52
11F:推 deathcustom :1729篇可不可以当八个人用= = 220.130.149.28 01/23 13:19