Turn := First;
while not Game.Finished do
begin
 Player := Players[Turn];
 Player.Think;
 ShowGame;
 Turn := GetNextTurn(Turn);
end;

のようなゲームのメインルーチンがあったとします。
この形を崩さずにイベントドリブンなアプリに組み込むにはどうすればいいですか?
いろんなところでApplication.ProcessMessageばら撒いておけばよさそうですが
もっと賢い方法がないですかね。