Ответ 1
Я предполагаю, что вы могли бы создать объект физического движка, который вы обновляете непрерывно с заданными временными интервалами. Он будет проверять наличие коллизий, перемещать мяч, вычислять углы отката и т.д.
РЕДАКТИРОВАТЬ № 1: Чтобы добавить немного более подробную информацию, объект "физика игры" сохранит, среди прочего, ссылки на другие игровые объекты, такие как мяч и весла. Объект физики игры будет иметь метод "обновления", который будет вызываться непрерывно по мере запуска игры. Некоторые из шагов, которые этот метод будет выполнять, следующие:
- Получить текущую позицию весла (которые контролируются игроками).
- Обновить положение мяча на основе его предыдущей скорости и направления и времени, прошедшего с момента последнего обновления.
- Обнаружение столкновений с другими объектами (веслами, стенами и т.д.).
- Подсчитайте скорость и направление мяча на основе любых столкновений.
Несколько идей.
РЕДАКТИРОВАТЬ № 2: Разработать немного больше фокуса OO...
Различные физические объекты, такие как мяч и весла, будут хранить врожденные физические состояния и параметры для себя (положение, скорость, массу и т.д.) как свойства. Объект физической игры будет по существу представлять все уравнения физического движения как методы.
В качестве примера... Предположим, вы хотите моделировать влияние трения воздуха на шар. Объект шара сохранит свойства, такие как "скорость" и "коэффициент сопротивления". Физический объект игры будет иметь метод вычисления силы сопротивления воздуха на объекте путем извлечения необходимых свойств этого объекта и включения их в заданное уравнение перетаскивание жидкости.
Инкапсулируя вещи таким образом, обновления кода могут быть проще. Например, если вы хотите использовать другое уравнение для гидравлического сопротивления, единственное изменение, которое вам нужно сделать, - это соответствующий метод объекта физики игры. Ни один из других объектов не нужно изменять.