Asumo que ya has diseñado completamente el programa.
Empieza por coger un montón de fichas. Escriba cada función (nombre, breve explicación de la funcionalidad, tal vez algún pseudocódigo) en una sola tarjeta. Si una función no cabe en una sola tarjeta, es que hace demasiadas cosas y debe desglosarse.
Una vez que haya escrito sus funciones, organícelas en un tablero de corcho. Divídelas por la clase u objeto al que pertenecen. Utiliza otra tarjeta que represente la clase en sí.
Por último, utiliza alguna cadena roja para enlazar las diferentes funciones (de diferentes clases) que se llaman entre sí. Por ejemplo, si la función A de la clase A llama a la función B de la clase B, únelas con una cadena. Si la función A de la clase A llama a la función B de la clase A, no las encadene.
Una vez que haya hecho esto, tendrá un hermoso diagrama que puede recorrer para resolver cualquier error de lógica que tenga. También tendrás una placa que se ve tan impresionante que no querrás desmontarla.
Ahora, puedes empezar a codificar. No te llevará mucho tiempo.