Something i would recommend is NOT using VSYNC or WAIT commands inside secondary loops, since a lot of them will slow down the execution of the main loop. Unless is intended.
i didn't think that it would matter if the vsync was in a while loop in the def. It isn't called every time either, only when the player wants the sprite to move and if the sprite is allowed to move. i suppose i could break it down into multiple functions...