Sorry, it took a while. My first time using direction, i did not know that it could generate random degrees. But it seem to not working when the ball already facing that direction. For example, when the ball already facing east and i hit it with my paddle. Nothing change. I increase my paddle height for testing.
Sorry, that thread has a lot of reading, took me a while to understand the problem. ABG solution is quite straight forward, I understand the general idea by comparing their coordinate XY position.