void TurnBasedBattleLoop
{
while (true)
{
OnTurnStart();
ThinkAll();
ExeActionAll();
OnTurnEnd();
if( IsFinished() )
return;
}
}
ほとんどの講座サイトでは、状態遷移が勧められているようです。シューティングやアクションのように、全ての物体が毎フレーム動くゲームでは状態遷移が有効なのは分かります。ただ、そのアイデアだけでは、僕にはターン制のゲーム(のコード)を考えられませんでした。オープンソースのローグライクのコードを見てみましたが、読んでも意味が分かりませんでした。
反則的だと思いますが、ウェイトコマンドをC++で実現する方法もあります。
void GameLoop()
{
while (true)
{
// メッセージ処理や画面の更新をして、
UpdateMain();
UpdateSub(); // 並列的な処理など
Render();
gFPS.Wait(); // 1フレーム待つ
}
}
void Wait( int nWait )
{
while (true)
{
if( nWait <= 0 )
return;
// メッセージ処理や画面の更新をして、
UpdateSub();
Render();
nWait--;
gFPS.Wait(); // 1フレーム待つ
}
}
プログラミング言語でゲームを作るのは、僕には本当に敷居が高いです。