Refactor+update

made a character check if the tile was empty before allowing it to move
there.

also refactored the movement logic in gamepanel to be more readable.