作者kyoe (习惯,不容易)
看板mud
标题[闲聊] 乐透系统
时间Tue Jan 22 19:48:14 2013
最近心血来潮实做仿大乐透的系统
分享一下让有兴趣的人参考参考
使用 mapping system_dbase 作为存放各期开奖号码、销售资料、彩金资料等等
mapping player_dbase 作为存放玩家购买的彩卷号码
实作心得:
首先想好一个乐透系统该让玩家有什麽动作和顺序才能完成整个流程
投注商店 -> 购买号码(自选|电选) -> 查看号码清单 -> 开奖程序 -> 统计结果 -> 自动兑奖
buy_lottery list_lottery lotteryd check_lottery
1. 投注商店:
set("lottery_shop", 1);
相关指令都指向 lotteryd
2. 购买号码(自选|电选) buy_lottery
自选: a. 限制购买6个号码及只能选择 1-49 号
b. 检查购买的号码中是否有重覆号码
c. 购买後自小到大重排顺序(可有可无)
a:
if(sscanf(arg,"%s,%s,%s,%s,%s,%s", n1, n2, n3, n4, n5, n6) == 6)
b:
for(i = 0; i < sizeof(my_number); i++) {
nf = 0;
foreach(string mn in my_number) if(mn == my_number[i]) nf++;
if(nf > 1) return notify_fail("第"+chinese_number(i+1)+"个号码与後方号码重覆,只能选择不重覆 1 - 49 号的数字。\n");
}
c:
my_number = sort_array(my_number, (: sort_number :));
电选:
for(i = 0; i < 张数; i++) {
if(!arrayp(take_number = take_nodouble_number())) {
return notify_fail("购买彩票出现错误,请使用 sos post 回报。\n");
break;
lottery_data[round_size]["player_dbase"][myid] += ({ take_number });
tell_object(me, HIC"彩票系统自动产生第"+chinese_number(i+1)+"组号码:"+implode(take_number, ",")+"\n"NOR);
}
take_nodouble_number() 是一个可以传回random不重覆号码array的function
不论自选或电选,应该都先在前方设定一个 check_user_data() 的 function 用於
新增/检查 user 的 lottery data array or mapping 以免产生问题
3. 查看号码清单 太简单,跳过
4. 开奖程序:
也很简单,大约是做个 1-49 个号码的 array,在选出号码时去掉 array 内的号码就可以
5. 统计结果:
首先做一只 check_number 的 function
大约是
//7 头奖 6全
if(array_eqv(numbers, result)) return 7;
//6 贰奖 5+1特别
//5 参奖 5
//4 肆奖 4+1
//3 伍奖 4
//2 陆奖 3+1
//1 普奖 3
foreach(string num in numbers) {
if(member_array(num, result) != -1) flag++;
}
switch(flag) {
case 5:
if(member_array(spe_number, numbers) != -1) return 6;
else return 5;
break;
case 4:
if(member_array(spe_number, numbers) != -1) return 4;
else return 3;
break;
case 3:
if(member_array(spe_number, numbers) != -1) return 2;
else return 1;
break;
}
return flag;
看回传的数字来判断是否中奖和什麽奖项
之後再将预计发出去的奖金和中奖人数记录写进该期的 system_dbase 去
6. 自动兑奖 同上,很简单
本来以为会很庞大繁琐和复杂,没想到写完其实很简单
但在奖金分配的时候有卡住一阵子,对数学真的不在行><
实做後自己玩,终於明白大乐透的中奖机会真的是很低!!!!!
--
还记得遥远过往被
深藏的回忆吗?
如果您已
经忘了被现实和繁忙淹没的
曾经
那麽就让我们帮助您找回那
份属於青涩年代的纯真吧
用文字幻化出华丽与梦想的彼岸
金庸修真录 telnet://jy.mud.com.tw:6666
盼能带领您找回似曾相识的记忆深处中最美丽的梦幻
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 1.163.12.224
1F:推 QQmother :骗钱!! 20万两gold玩完 have a shit 123.192.148.71 01/22 20:03
2F:→ laechan :推.另提一点个人看法,list_lottery其 1.165.164.2 01/22 20:08
3F:→ laechan :实可以不用做,不管是自选或电脑选 1.165.164.2 01/22 20:16
4F:→ laechan :自选玩家有留底,电选玩家不care选啥 1.165.164.2 01/22 20:20
5F:→ kyoe :那是轮盘!!! 1.163.12.224 01/22 20:29
6F:→ stimim :如果你有 sort 的话,只要看相邻的一 36.226.38.248 01/22 22:24
7F:推 stimim :不一样就知道有没有重复了 36.226.38.248 01/22 22:28
8F:→ kyoe :那 1,2,3,4,5,1有相邻吗-.- 111.240.22.89 01/22 22:36
9F:推 stimim :你 sort 过就会变 1 1 2 3 4 5 啊 36.226.38.248 01/22 22:44
10F:→ laechan :号码sort过再存,理论上会比较好处理 1.165.164.2 01/22 22:45
11F:→ kyoe :有道理耶!!我没想到 111.240.22.89 01/22 23:19
12F:推 darkmoon1725:老木没gg 118.160.187.73 01/23 00:17