Quando devi fare più cose devi anche pensare diversamente il programma, questo perché il decidere cosa fare a secondo del tempo trascorso alla fine deve essere centralizzato in qualche modo.
Ad esempio l'apparizione di un messaggio per un certo intervallo (quello del delay(6000) se non ho capito male) dovrebbe diventare una funzione a parte, generica ed utilizzabile dal resto del programma e cheappartiene ad un ciclo di cose che possono essere eseguite in dipendenza, ad esempio, da un flag.
Oppure ti crei o usi un task scheduler, Guglielmo, se non ricordo male, ne ha realizzato uno ma ce ne sono tanti.