Можно просто в цикле в бесконечном проверять координаты и прибавлять к текущим координатам такие вещи: dx и dy(для шарика), а координаты прямоугольников будут меняться когда ты клавишами вверх вниз (для второго игрока например w s) щелкнешь, например нажал вниз, и у тебя dy(для прямоугольника) стало равно -1, нажал вверх - просто 1, тоже для dx а при отскакивании от чего либо dx и dy(для шарика) меняют знаки, от нижней и верхней части экрана - dy меняет знак, от прямоугольников - dx меняет знак (это если прямоугольники по вертикали двигаются). А вот если ты прогу посложнее решишь написать, то угол отскока нужно будет не просто инверсией dx/dy считать, а еще и учитывать скорость прямоугольников, и ввести какой-нибудь коэффициент трения (и высчитывать углы по физическим законам). Так что решай, что делать