attacco_sx chiama maresinistra che potrebbe chiamare attacco_sx...
è solo un esempio (non lo leggerò tutto ne posso mettemri a verificare le condizioni che lo regolano) ma è il classico modo per finire in stackoverflow.

Una funzione quando chiama un altra è come se si mettesse un mattone sopra un altro mattone. Quando una funzione termina viene tolto un mattone e non puoi avere piu di un certo numero di mattoni impilati. Se A chiama B che chiama A crei un ciclo di chiamate infinito che termina appunto con uno stackoverflow: troppi mattoni