fslasht (3370) の日記

2004 年 05 月 09 日
午前 02:39

[SDL][lua] SDLオフ会のネタ作成中

STATUS: 故障中

 SDLオフ会のネタ作成中。
 今日の12:00集合だから、あと9時間くらいしかないよ~
 で、いま必要なライブラリが揃ったという感じ、ゲームはこれから作るのだ。きっと開発効率が最強に強まったライブラリ群をバリバリ使ってあっという間に完成ですよ(妄想)

 Lua操作クラスでコルーチンを簡単に利用できるようにしました。
 ライブラリ群はゲームが完成したら、いっしょに公開します。

● 利用例
        FTEzLua lua( "test1.lua" , FTEzLua::LIB_BASE , this );
        FTEzLua luaCo = lua.NewThread("co_func");

        lua.SetGlobalVar("g",(FTEzLuaValue)0 );
        int n = 1;
        while (luaCo.Resume( FTEzLuaValue(n) ) == 0) {
                FTEzLuaValue lv = luaCo.GetResumeResult();
                lv.Dump();
                n*=2;
        }
        TRACE("g=%d\n", (int)lua.GetGlobalVar("g") );

● luaスクリプト (test1.lua)
function co_func()
        n=999;
        for i=0,10 do
                n = coroutine.yield(i,n)
                g=g+n
        end
end

● 実行結果
0:999 1:0
0:2 1:1
0:4 1:2
0:8 1:3
0:16 1:4
0:32 1:5
0:64 1:6
0:128 1:7
0:256 1:8
0:512 1:9
0:1024 1:10
0:(none)
g=4094

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。

皆さんもソースを読むときに、行と行の間を読むような気持ちで見てほしい -- あるハッカー

処理中...