Désolé, c'était un peu noyé dans le reste. Et puis en réalité ça n'a rien à voir avec le tile mapping, c'est un problème de logique (au pire, de collision).
Ton programme ne fait pas ce que tu veux qu'il fasse ? Retrousse tes manches, utilise ton debugger, fais du pas à pas, affiche des infos intermédiaires, simplifie ton code et avance par étape, ... bref fais ton boulot de programmeur. Poster des murs de code sur les forums en disant "ça marche pas", c'est pas vraiment la solution. Et si vraiment tu bloques sur un truc incompréhensible, tu devrais être capable de le réduire à un code complet minimal qui peut facilement être inspecté sur les forums.