このプログラムはY方向に関しては重力加速度が0.1、速度はG、床との反発係数が0.7ということで動作面においては問題はないのですが、X方向に関してはXPとDXという2つの速度(?)が存在していてるし0.09という謎の加速度(空気抵抗?)があるため挙動が不自然になっている部分があります。 それは一旦おいといて、プログラム的に一番気になったのは32行の処理です。 「XPが1より小さくなったら0にする」というのは「一定以下の速度になったら静止する」という処理でありこれ自体は問題はないのですが、肝心の座標への加算処理となるHX=HX+XPがその「0にする処理」よりも前になるためこのプログラムでは永遠に0.09ずつ動き続けてしまいます。