Добавляем переменную SPEED со значением допустим 5 ( SPEED = 5 ) и в метод __init__ self.speed = SPEED
( если ты знаешь о Class в Python, то легко справишься и поймешь для чего, иначе учи python, а после интересуйся библиотекой Pygame )
def update(self):
self.rect.x += self.speed
if self.rect.left < 0 or self.rect.right > WIDTH:
self.speed = -self.speed
( не забывайте, что все, что вы помещаете в метод update(), будет происходить в каждом кадре. )
в этом блоке кода каждый кадр, а точнее каждые 0.02 сек происходит следующее:
self.rect.x += self.speed #speed = 5
твой прямоугольник переместился вправо на 5, потому что SPEED равна 5. след шаг
if self.rect.left < 0 or self.rect.right > WIDTH:
проверяется дошел ли левый край объекта до левой стороны окна или правая сторона объекта до правой стороны окна, если хоть одно из этих двух условий верно, то переходит к выполнению блока if, если не одно не является истиной, то все начинается сначала (перемещается на 5 вправо и проверяется условие).
Как только объект дошел до правой cтороны, то speed меняет свое значение на -5 и теперь прямоугольник будет идти влево
self.rect.x += self.speed #speed = -5
до тех пор пока левая сторона объекта не дойдет до левой стороны окна =3