Quella IF serve (servirebbe) a controllare se l'asterisco sta per toccare i bordi della mappa.

movimentoPersonaggio() l'ho richiamata nella stessa funzione per un semplice motivo: ripetere tutto.
Visto che quando l'asterisco sta per toccare i bordi l'IF dovrebbe bloccarlo, lo stesso asterisco non si dovrebbe effettivamente muovere, perché verrebbe richiamata la funzione movimentoPersonaggio, cioè dove richiede l'input del tasto per muoverlo.

Ma, ovviamente, non funziona.