Pe baza butoanelor, jocul poate fi urmărit ca un automat de stări.
În loop se pot observa aceste stări: GAME_INIT, GAME_BEGINS, GAME_STARTED, cât și alte variabile de stare: player_switched (care imi spune dacă un player și-a realizat tura, eu ar trebui să afișez pe ecran ceea ce el a făcut, iar următorul jucător poate continua)
Am ales să folosesc destul de multe variabile de stări, înafară de acestea, deoarece am dorit să nu desenez la fiecare apel de loop încontinuu aceleași forme care oricum erau desenate.
În funcție de starea jocului, în anumite situații, am ales să redesenez ceea ce voiam să șterg cu culoarea background-ului, deoarece era mai costisitor să dau clear la ecran, după care să redesenez totul (în primul rând ar fi trebui să țin minte ce am desenat și în al 2-lea rând ecranul ar fi făcut un flicker constant, ceea ce ar fi fost urât).
Se poate observa că în cod sunt foarte multe define-uri, deoarece am vrut să economisesc cât mai multă memorie, define-urile fiind folosite doar in etapa de preprocesare