作者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