Estoy tratando de aprender Python/Pygame e hice un juego de Pong simple. Sin embargo, no puedo hacer que el cuadrado rebote en los lados en el píxel perfecto, ya que el dibujo del cuadrado se actualiza, digamos 3 píxeles en cada cuadro.
Tengo un código para decidir cuándo el cuadrado golpea los bordes y rebota en una dirección inversa como esta:
if y_ball < 100: y_ball_change = y_ball_change * -1 if y_ball > 675: y_ball_change = y_ball_change * -1 if x_ball > 775: x_ball_change = x_ball_change * -1 if x_ball <= x_rect + 25 and y_ball >= y_rect -25 and not y_ball > y_rect + 150: x_ball_change = x_ball_change * -1 +2Mantiene el cuadrado dentro de los límites de la pantalla, sin embargo, no es un píxel perfecto ya que
x_ball_change y_ball_changesuele ser más/menos de 1, ya que se aleatorizan entre -5 y 5 (excepto 0) para que la dirección inicial de la pelota sea aleatoria en cada nuevo juego.
¡Gracias por cualquier ayuda!
También debe corregir la posición de la pelota al cambiar la dirección de la pelota. La bola rebota en los límites y recorre la distancia excesiva en sentido contrario como una bola de billar:
p.ej:
if y_ball < 100: y_ball = 100 + (100 - y_ball) y_ball_change = y_ball_change * -1 if y_ball > 675: y_ball = 675 - (y_ball - 675) y_ball_change = y_ball_change * -1 if x_ball > 775: x_ball = 775 - (x_ball - 775) x_ball_change = x_ball_change * -1 if x_ball <= x_rect + 25 and y_rect -25 <= y_ball <= y_rect + 150: x_ball = x_rect + 25 + (x_rect + 25 - x_ball) x_ball_change = x_ball_change * -1 +2