読者です 読者をやめる 読者になる 読者になる

squirrelの構文習得

http://svn.sourceforge.jp/svnroot/shive/junk/diary/2008/20080906-test100.nut
構文習得がてらつらつら書いてみた。luaC++も好きなので気持ちがいいです。早くゲームに使ってみたい。
以前luaを使っていたときにもすでにcoroutine(fiber)の仕様はあったんですが、当時はC言語側から関数やテーブルを叩くときにstackを分離したくて使っていただけで全くスクリプトから使っていませんでした。

//敵思考
function enemy_main() {
    //初期化
    while(suspend()){//次のフレームまで待機
        //ループ処理
    }
}
local enemy_main_thread = newthread(enemy_main);
enemy_main_thread.call();

//敵思考
function player_main() {
    //初期化
    while(suspend()){//次のフレームまで待機
        //ループ処理
    }
}
local player_main_thread = newthread(player_main);
player_main_thread.call();

idle=true;
while(idle){
    idle=(終了判定);
    enemy_main_thread.wakeup(idle);
    player_main_thread.wakeup(idle);
}

ゲームループに差し込むとしたらこんな感じになるんだろうか。

squirrelをwebで調べてたらやっぱりstack操作に嫌悪感を感じる人が居るみたい。
最初はなんじゃこりゃと思うものの、そんなところに惹かれるようになったらあなたも私と同じ変態です。