アットウィキロゴ

メインループ

allmain.c

for(;;) {

    if(プレイヤーが行動した?) {
        プレイヤーの行動ポイント消費(-NORMAL_SPEED)

        do { /* hero can't move this turn loop */

            <モンスターの行動> 動ける奴がいる限りループ (中で死亡モンスターの後始末など)

            if (動ける奴がいなくなった?) {

                モンスターの時間経過処理(罠/ステータス異常等)

                モンスターの行動ポイントを加算

                モンスター自然発生

                /* calculate how much time passed. */

                プレイヤーの行動ポイントを速度に応じて加算

                ターン数+1

                /********************************/
                /* ターンごとの処理はココ       */
                /********************************/

                各種時間経過の処理

                プレイヤーのHP自然回復
                プレイヤーのMP自然回復

                非制御テレポート・変身
                自動サーチ・腹減り・呪文忘れ
                Air/Waterプレーン/Vault/AoYの特殊効果

                行動不能のターン数-1
            }
        } while (プレイヤーの行動ポイントが足りない間); /* hero can't move loop */

        /******************************************/
        /* プレイヤーの行動毎の処理はココ         */
        /******************************************/

    } /* actual time passed */

    /****************************************/
    /* プレイヤーの入力毎の処理はココ       */
    /****************************************/

    AC再計算
    再描画
    ステータス行更新

    行動不能時のやりかけ仕事の処理(あれば)→ループ先頭へ
    Clairvoyant処理
    溶岩沈没処理

    プレイヤーの繰り返し行動
    or
    <プレイヤーの通常行動(rhack())>

    レベル移動
    再描画
}
最終更新:2008年07月23日 01:07