次の状態を返す関数ポインタでループすればいんじゃないの?