Since you asked noone to comment on the way the code is written I'll refrain commenting.
====
The reason why your sprite isn't moving is because you don't have any code in the loop to update the sprite position
you use the sprite command in the beginning with charx & chary to set the sprites position
In the loop you update charx and chary but you fail to use them in any command to update the sprites new location. Using show sprite will not take the new values of charx and chary. It will just show the sprite at the last set coordinates
so you need to either use the "sprite" or "paste sprite" commands.
Just note. I believe if you use paste sprite you will lose the ability to use the built in sprite collision commands. Unless that has been fixed since I have been away.
you could also use offset sprite but you need to understand the difference.