Вы должны инвертировать dbx
, когда мяч касается левой или правой части окна. И вы должны инвертировать dby
, когда мяч касается вершины или низа.
Но если выровненная по оси составляющая скорости шара не точно равна 1, то шар не будет точно касаться границы. Вы должны оценить, если координата <=
, >=
, а не ==
.
Мое предложение:
radius = 15
width, height = 800, 600
if ball_x <= radius or ball_x >= width-radius:
dbx = -dbx
if ball_y <= radius or ball_y >= height-radius:
dby = -dby