Well done dude. But i think that, if you do weird stuff while choosing the place, the sprite will follow that weird pattern for no reason. Right? Something i think of, is to move first on the X axis, then on the Y axis, depending of where the destination is located. And on each step, check if nearby "blocks" are passable. But i have to test it first.