Читай про машины состояний. У тебя есть машина состояний, описывающая ход матча ("матч закончен", "ожидание игроков", "ход игрока" и т.п.), и ряд вложенных машин для отдельных игроков ("ожидание готовности", "готовность", "ожидание хода игрока", "ход сделан" и т.п.), которые активируются в определённом состоянии основной машины.