整理某人的目錄時, 發現幾個奇特的寫法...
void start_call_out()
{
shout("開始對所有人做廣播.\n");
call_out("call_out1",3);
}
void call_out1()
{
shout("聖殿廣播~~~~~~SM 6 6 6 . 6~~~~~~\n");
call_out("call_out2",3);
}
void call_out2()
{
shout("歡迎收聽聖殿廣播 ^_^\n");
}
那麼, 底下簡單介紹 call_out 可以怎麼使用. 比方有一首詩,
你希望讓這首詩一行一行地出現讓玩家看, 中間隔個兩三秒...
老木老碑迎風挺,
蘭窖織芭為君開,
天搖地動哀鳴聲,
嗚呼贛林老蹟埋.
程式的寫法如底下...
void run_poem()
{
mixed poem=({
"老木老碑迎風挺,",
蘭窖織芭為君開,
天搖地動哀鳴聲,
嗚呼贛林老蹟埋.
程式的寫法如底下...
void run_poem()
{
mixed poem=({
"老木老碑迎風挺,",
"蘭窖織芭為君開,",
"天搖地動哀鳴聲,",
"嗚呼贛林老蹟埋.",
});
int i;
for(i=0;i<sizeof(poem);i++)
call_out("shout_msg",3+(3*i),poem[i]);
return 1;
}
void shout_msg(string poem_line)
{ shout(poem_line); }
簡單的說, run_poem 主要執行 4 次的 call_out, 執行的時間
幾乎都在同時, 不過...
i=0 時, 設定了等 3 秒才 call_out shout_msg
i=1 時, 設定了等 6 秒才 call_out shout_msg
i=2 時, 設定了等 9 秒才 call_out shout_msg
i=3 時, 設定了等 12 秒才 call_out shout_msg
因此時間經過 3 秒後, shout_msg 就被呼叫了一次, 再過 3 秒
shout_msg 又被呼叫一次...以此類推, 再長的敘述, 用上述的
寫法很簡單地就可以被寫出來, 著名的[世紀末戰爭], 就是這類
程式寫法的極致應用.
Laechan