Ваши x_val
и y_val
должны быть увеличены внутри основного цикла, иначе они будут увеличены один раз и никогда больше.
Вы очень близки к тому, чтобы получить необходимое вам условие. Вот некоторый код, который заставляет шар менять направление, если он касается стен экрана:
if x_val < 0 or x_val > width:
x_direction = x_direction * -1
if y_val < 0 or x_val > height:
y_direction = y_direction * -1
Этот код также должен быть включен в основной цикл, так как нам нужно проверить положение шара, чтобы увидеть, сталкивается ли он со стеной в каждом кадре.
Поскольку ваш мяч имеет размер, а ваши переменные x_val
и y_val
представляют центр вашего шара, вам нужно будет включить размер шара в условное выше, чтобы заставить мяч отскочить от его край, в отличие от его центра.