I made this program as a side project. Normally, for a directional acceleration, you would need one variable per axis per sprite (this last part so each sprite can move independently). However, in this program, I was able to create independent y-axis accelerations for a user-controlled sprite (use the UP and DOWN arrow keys) and an AI off of only ONE variable. I programmed both sprites so they decelerate faster than they accelerate. The AI jams up a little if you go very low on the screen.