Utiliser une machines à état pour faire ce genre de chose me semblerait bien adapté Programmation Automate fini / Machine à état