import pygame
def game():
yellow = (255, 255, 0)
black = (0, 0, 0)
radius = 30
x_circle = 320 # Coordenada do Círuclo no eixo X
y_circle = 240 # Coordenada do Círuclo no eixo Y
speed_x = 0.1 # Sua velocidade pelo eixo X
speed_y = 0.1 # Sua velocidade pelo eixo Y
pygame.init()
screen = pygame.display.set_mode((640, 480), 0)
while True:
# Calcular as regras
x_circle += speed_x
y_circle += speed_y
# Movimentos no eixo X
if x_circle + radius > 640:
speed_x = -0.1
if x_circle - radius < 0:
speed_x = 0.1
# Movimentos no eixo Y
if y_circle + radius > 480:
speed_y = -0.1
if y_circle - radius < 0:
speed_y = 0.1
print(f'X = {x_circle:.0f} | Y = {y_circle:.0f}')
# Pintar
screen.fill(black)
pygame.draw.circle(screen, yellow, (x_circle, y_circle), 30, 0)
pygame.display.update()
# Eventos
for e in pygame.event.get():
if e.type == pygame.QUIT:
exit()
if __name__ == '__main__':
game()
No laço, no cálculo das regras se eu alterar os sinais para "-=" a colisão para de funcionar, pq isso acontece, se meus ifs atendes os requisitos.
x_circle -= speed_x
y_circle -= speed_y