作者laechan (小太保)
看板mud_sanc
标题Re: [闲聊] 轮盘系统完工了..
时间Fri Jun 17 23:02:16 2011
myst 的做法是,type 有四种,因此 win_check 也做四回,
每回再依据每一 type 需 check 的次数各自回圈。
因此,形成 win_check 被呼叫 N 次、然後 win_check 内的
回圈也做 N 次的情况。
win_check 的内容很单纯..
int win_check(string win_kind,string win_str,int pay_kind)
{
string win_id,user_id;
foreach(win_id in keys(rotary_data)) // 回圈
if(sscanf(win_id,win_kind+"/%s",user_id)==1)
bet_winer(user_id,win_kind,win_str,pay_kind);
}
换言之,即使不写函数,光只是硬把 foreach 套进每次的判
断,就足以改善掉目前的 lag 情况。
但是呢,因为 foreach 的内容是针对每个 rotary_data,而
它是全域变数,因此产生了本次最佳化的基本改法..
foreach(win_id in keys(rotary_data))
{
先判断 win_id 的类型,再依据类型做 switch() // 这里用 str[..]
{
case type 1;
case type 2;
case type 3;
case type 4;
}
}
这样只需针对 rotary_data 做「一次回圈」,即可判断出所
有奖项。
上面的东西预定明天修改完毕後重新开放。
Belldandy.
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 122.117.9.179
1F:推 justinj :将win_check及bet_winner给合并... 06/18 09:50
2F:→ laechan :一项一项改即可,一次合并做,需 debug 的部份会变多 06/18 10:29
3F:推 justinj :变数太复杂....要修还是太烦了..还是不要看好了.amem 06/18 11:03
4F:→ justinj :目前还是想看魔法阵1号......avert 06/18 11:03
5F:→ laechan :不是可以看到了吗? /d/spell/magic-cycle.c 大致好了 06/18 20:05
6F:→ laechan :今晚要 modify /d/spell/magic-cycle_ob.c 06/18 20:05
7F:推 justinj :技能的我只看的到enable,及heart.其它像spell,fist是 06/18 21:38
8F:→ justinj :看不到的... 06/18 21:38