Apr-27-2025, 04:36 PM
import pygame from random import randint from math import sin, cos pygame.init() window = pygame.display.set_mode((800, 600)) keys = pygame.key.get_pressed() font = pygame.font.Font(None, 100) 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 self.instance.fill('white') def frame(self): global p1score global p2score 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 > 790 or self.rect.x < 10 or keys[pygame.K_r]: if self.rect.x > 790: p1score += 1 elif self.rect.x < 10: p2score += 1 self.rect.x = 400 self.rect.y = 300 self.direction = randint(0, 360) p1, p2 = Paddle(1), Paddle(2) ball = Ball() p1score = 0 p2score = 0 while True: for event in pygame.event.get(): if event.type == pygame.QUIT: pygame.quit() exit() window.fill('black') keys = pygame.key.get_pressed() score = font.render(f'{p1score} | {p2score}', False, 'gray') p1.frame() p2.frame() ball.frame() window.blit(p1.instance, p1.rect) window.blit(p2.instance, p2.rect) window.blit(ball.instance, ball.rect) window.blit(score, score.get_rect(center=(400, 75))) pygame.display.flip() pygame.time.Clock().tick(120)