При отскоке шайбы от клюшки, тебе нужно учитывать направление движения самой шайбы и клюшки? Я бы не учитывал, ИМХО так будет играбельней. Если надо, сам потом расширишь алгоритм.
Так как у нас и шайба и клюшка - это окружности, после удара шайба будет двигаться по вектору, который можно провести от центра клюшки до центра шайбы(изменишь, если не устраивает). Самое сложное - определить координаты шайбы и клюшки в момент столкновения. Простой hitTest тут естественно не подходит, так как шайба и клюшка могут двигаться с большими скоростями и пролететь друг сквозь друга. Я бы решил это через систему уровнений. Сейчас я не могу привести её, так как исходник реализующий это на домашнем компе( в своё время делал арканоид (: ), вечером если надо скину. Смысл в том что можно записать уровнение движения шайбы и клюшки как

Код:
Xш = X0ш+Vxш*t
Yш = Y0ш+Vyш*t
Где X0ш, Y0ш - начальная позиция, Vx, Vy - горизонтальная и вертикальная скорость, t - время
То де самое для клюшки

Код:
Xк = X0к+Vxк*t
Yк = Y0к+Vyк*t
Они столкнуться если расстояние между ними будет равно сумме радиусов. Дописываем в систему

Код:
(Xк-Xш)^2 + (Yк-Yш)^2 = (Rш+Rк)^2
Вообщем всё записанное это одна большая система. Найти нам надо t - время, через которое они встретятся. После нахождения t подставляем его в любые уравнения и находим X и Y шайбы или клюшки.
Если надо, вечером выложу рабочий код, на Delphi правда.