I'm making a ping pong game but for some reason the .frame functions aren't working
import pygame from random import randint from math import sin, cos window = pygame.display.set_mode((800, 600)) keys = pygame.key.get_pressed() class Paddle: def __init__(self, playernum): self.instance = pygame.Surface((10, 70)) self.rect = self.instance.get_rect(center=((10 if playernum == 1 else 790), 300)) self.playernum = playernum self.instance.fill('white') def frame(self): if self.playernum == 1: if keys[pygame.K_w]: self.rect.y -= 3 if keys[pygame.K_x]: self.rect.y += 3 else: if keys[pygame.K_i]: self.rect.y -= 3 if keys[pygame.K_m]: self.rect.y += 3 class Ball: def __init__(self): self.instance = pygame.Surface((25, 25)) self.rect = self.instance.get_rect(center=(400, 300)) self.direction = 270 if randint(1, 2) == 1 else 90 def frame(self): if self.rect.colliderect(p1.rect) or self.rect.colliderect(p2.rect) or self.rect.y > 600 or self.rect.y < 0: self.direction += 90 self.rect.x += 3 * sin(self.direction) self.rect.y += 3 * cos(self.direction) if self.rect.x > 800 or self.rect.x < 0 self.rect.x = 400 self.rect.y = 300 self.direction = 270 if randint(1, 2) == 1 else 90 p1, p2 = Paddle(1), Paddle(2) ball = Ball() while True: for event in pygame.event.get(): if event.type == pygame.QUIT: pygame.quit() exit() window.fill('black') key = pygame.key.get_pressed() p1.frame() p2.frame() ball.frame() window.blit(p1, p1.rect) window.blit(p2, p2.rect) window.blit(ball, ball.rect) pygame.display.flip() pygame.time.Clock().tick(120)