Io non userei l'aggettivo "artigianale": di solito richiama qualcosa di professionale e realizzato con una certa disciplina, come fanno appunto gli artigiani.
Questo suggerisce un approccio "a tentativi": si scrive del codice e si danno martellate fino a quando non funziona.
Purtroppo è necessaria invece molta precisione, e nel caso in esame anche una certa inclinazione all'ordine.
Riprendendo quanto ho scritto sopra, qui infatti il problema principale è che tu hai scritto tutto di getto, come un fiume di righe sequenziali, senza creare funzioni, oggetti, in breve una architettura che possa dare un ordine al tuo codice.
Ciò rende difficile darti una mano, a meno di non mettersi lì a testa bassa a osservare riga per riga quello che hai scritto, magari riproducendo il programma sul proprio PC o da qualche altra parte, perché altrimenti risulta difficile capire nel marasma generale dove si annida la problematica che denunci.
Io farei un refactoring del tuo codice, ossia troverei il modo di strutturarlo e dividerlo meglio, separando le routine e le responsabilità di ciascuna parte in funzioni o in altri costrutti, dando più ordine al tutto: molto probabilmente, nel fare questo, troverai anche la causa del problema che stai riscontrando.![]()