Круг застревает в краях окна, pygame

import pygame
import random

############################################################
width = 500
height = 500
size = (width, height)
xCord = 350
yCord = 180
radius = 50
DRxCord = 1
DRyCord = 1
direct = DRxCord # 1 - Вправо | -1 - Влево
cours = DRyCord # 1 - Вниз | -1 - Вверх
#############################################################

pygame.init()
pygame.display.set_caption("My first game")
surface = pygame.display.set_mode(size)
surface.fill((255, 255, 255))

pygame.display.update()

while True:

    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            exit()

#############################################################

#    xCord = xCord + 1
 #   yCord = yCord + 1

    DRyCord = random.randint(0, 1)
    if DRyCord == 0:
        DRyCord = -1
    else:
        DRyCord = 1
    if xCord > width:
        direct = DRyCord
    elif xCord < 0:
        direct = DRyCord
    xCord = xCord + 1 * direct

    DRxCord = random.randint(0, 1)
    if DRxCord == 0:
        DRxCord = -1
    else:
        DRxCord = 1
    if yCord > height:
        cours = DRxCord
    elif yCord < 0:
        cours = DRxCord
    yCord = yCord + 1 * cours


#    if xCord > width - radius:
 #      direct = -1
  #  elif xCord == 0 + radius:
   #    direct = 1
    #xCord = xCord + 1 * direct

    #if xCord > width + radius:
    #    xCord = 0 - radius

##############################################################

    surface.fill((255, 255, 255))
    pygame.draw.circle(surface, (255, 0, 0), (xCord, yCord), radius)

    pygame.time.delay(5)

    pygame.display.update()

Здравствуйте я начинающий программист. Я захотел поэкспериментировать и сделать так, чтобы круг при ударе об края окна следовал случайной траектории. Но у меня круг застревает в краях (Можете запустить если сможете). Заранее благодарю за помощь <3

Запустил, норм отталкивается. Единственное шар на 40 % погружается в борт окна. Но думаю это связано с разрешением.

Углы обрабатывайте отдельно. Если угол то летит не случайно, а в противоположную сторону.

Да действительно иногда прилипает к стене, и через несколько циклов выходит из залипания.
А по поводу погружения на половину в стену, здесь скорее из за того что за точку столкновения принимаем центр шара а не его радиус.

С радиусом исправил, а вот с засасыванием в стену разобраться немогу

Как-то так получилось:

import pygame
import sys
import math
 
size = width, height = 500, 400
#black = 0, 0, 0
white = 255, 255, 255
def main():
    pygame.init()
    screen = pygame.display.set_mode(size)
    game_over = False
    ball_x = 20
    ball_y = 20
    dx = 1
    dy = 1
    while not game_over:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                game_over = True
        #screen.fill(black)
        screen.fill(white)
        ball_x += dx
        ball_y += dy
        if ball_y > 380 or ball_y < 20:
            dy *= -1
        if ball_x > 480 or ball_x < 20:
            dx *= -1
            
        pygame.draw.circle(screen, (0, 255, 0), (ball_x, ball_y), 20)
        pygame.display.flip()
        pygame.time.wait(10)
 
if __name__ == '__main__':
    main()
    pygame.quit()