El personaje es una pelota que rebota.
Cuando rebota contra el piso puse el codigo: vspeed = -vspeed;
Y cuando rebota contra la pared: hspeed = -hspeed;
El problema se genera cuando comienzo el juego y la pelota rebota cada vez mas alto.
Revisa si tienes algun sistema de gravedad si es asi puedes hacer que la velocidad con la que salta sea una variable estatica por ejemplo 20 y que cada ves que choque con el suelo en ves de que sea vspeed = -vspeed sea vspeed = -20