ゲーム型アプリをスマートに記述できないか

ゲーム型アプリのソースを見ると独自ループを仕込んだややこしい仕組みのものをよく見かける。どうしてこうなってしまっているんだろう?ゲームと通常のWindowsアプリの決定的な違いについて考えてみた。するとある事実に気が付いた。

タイトル画面
 マウスキーボードイベント
  ・・・ゲーム中画面へ遷移

ゲーム中画面
 ゲームの勝敗判定をする
  ・・・判定により人の手番、PCの手番、ゲームオーバーへ遷移

人の手番
 マウスキーボードイベント
  ・・・一手入力終わったらゲーム中画面へ遷移

PCの手番
 AIアルゴリズムで手番を生成
  ・・・一手入力終わったらゲーム中画面へ遷移

ゲームオーバー
 マウスキーボードイベント
  ・・・タイトル画面へ遷移

これらがもし別々のウインドウを表示してよいならば一般的な業務アプリの手法で結構簡単に作れる。それらが全て一つのウインドウを一切閉じずに遷移するためにゲームアプリというと先に述べた仕組みをしていることに気づいた。つまりゲーム型アプリを作る事を、ウインドウを閉じずに別々の画面遷移を行える手段を考えることに置き換えて考えればスマートに記述できる方法がありそうに思う。