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