Imagino que podría hacer un objeto de motor de física que actualice continuamente en intervalos de tiempo determinados. Verificaría colisiones, movería la bola, calcularía los ángulos de rebote, etc.
EDIT # 1: Para agregar un poco más de detalle, el objeto "física del juego" almacenaría, entre otras cosas, referencias a otros objetos del juego como la pelota y las paletas. El objeto de física del juego tendría un método de "actualización" que se llamaría continuamente a medida que el juego se ejecuta. Algunos de los pasos que este método realizaría son:
- Obtenga la posición actual de las paletas (que están controladas por los jugadores).
- Actualiza la posición de la bola según su velocidad y dirección anteriores y el tiempo transcurrido desde la última actualización.
- Detecta colisiones con otros objetos (paletas, paredes, etc.).
- Recalcule la velocidad y la dirección de la bola en función de cualquier colisión.
Solo algunas ideas.
editar # 2: Elaborar con un poco más de un enfoque orientado a objetos ...
Los diversos objetos físicos, como la bola y las paletas, almacenaría estados físicos innatos y los parámetros por sí mismos (posición, velocidad, masa, etc.) como propiedades. El objeto de física del juego representaría esencialmente todas las ecuaciones del movimiento físico como métodos.
Como ejemplo ... Supongamos que desea modelar los efectos de la fricción del aire sobre la bola. El objeto pelota almacenaría propiedades como "velocidad" y "coeficiente de arrastre". El objeto de física del juego tendría un método para calcular la fuerza de la resistencia del aire en un objeto obteniendo las propiedades necesarias de ese objeto y conectándolo a una ecuación dada de fluid drag.
Al encapsular las cosas de esta manera, las actualizaciones del código pueden ser más fáciles. Por ejemplo, si quiere usar una ecuación diferente para el arrastre fluido, la única modificación que necesita hacer es el método apropiado del objeto de física del juego. Ninguno de los otros objetos necesita ser modificado.