Untitled
unknown
plain_text
a year ago
2.8 kB
4
Indexable
import pygame
import sys
# Initialize pygame
pygame.init()
# Screen dimensions
WIDTH, HEIGHT = 800, 600
# Colors
WHITE = (255, 255, 255)
BLACK = (0, 0, 0)
# Paddle dimensions
PADDLE_WIDTH, PADDLE_HEIGHT = 10, 100
# Ball dimensions
BALL_SIZE = 15
# Initialize screen
screen = pygame.display.set_mode((WIDTH, HEIGHT))
pygame.display.set_caption("Pong")
# Clock for controlling frame rate
clock = pygame.time.Clock()
# Paddle positions
left_paddle = pygame.Rect(10, (HEIGHT // 2) - (PADDLE_HEIGHT // 2), PADDLE_WIDTH, PADDLE_HEIGHT)
right_paddle = pygame.Rect(WIDTH - 20, (HEIGHT // 2) - (PADDLE_HEIGHT // 2), PADDLE_WIDTH, PADDLE_HEIGHT)
# Ball position and velocity
ball = pygame.Rect(WIDTH // 2, HEIGHT // 2, BALL_SIZE, BALL_SIZE)
ball_speed = [4, 4]
# Paddle speeds
left_paddle_speed = 0
right_paddle_speed = 0
# Game loop
while True:
# Handle events
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_w:
left_paddle_speed = -6
if event.key == pygame.K_s:
left_paddle_speed = 6
if event.key == pygame.K_UP:
right_paddle_speed = -6
if event.key == pygame.K_DOWN:
right_paddle_speed = 6
if event.type == pygame.KEYUP:
if event.key in (pygame.K_w, pygame.K_s):
left_paddle_speed = 0
if event.key in (pygame.K_UP, pygame.K_DOWN):
right_paddle_speed = 0
# Move paddles
left_paddle.y += left_paddle_speed
right_paddle.y += right_paddle_speed
# Prevent paddles from going out of bounds
left_paddle.y = max(0, min(HEIGHT - PADDLE_HEIGHT, left_paddle.y))
right_paddle.y = max(0, min(HEIGHT - PADDLE_HEIGHT, right_paddle.y))
# Move ball
ball.x += ball_speed[0]
ball.y += ball_speed[1]
# Ball collision with top and bottom walls
if ball.top <= 0 or ball.bottom >= HEIGHT:
ball_speed[1] = -ball_speed[1]
# Ball collision with paddles
if ball.colliderect(left_paddle) or ball.colliderect(right_paddle):
ball_speed[0] = -ball_speed[0]
# Ball goes out of bounds
if ball.left <= 0 or ball.right >= WIDTH:
ball.x, ball.y = WIDTH // 2, HEIGHT // 2
ball_speed = [4, 4]
# Draw everything
screen.fill(BLACK)
pygame.draw.rect(screen, WHITE, left_paddle)
pygame.draw.rect(screen, WHITE, right_paddle)
pygame.draw.ellipse(screen, WHITE, ball)
pygame.draw.aaline(screen, WHITE, (WIDTH // 2, 0), (WIDTH // 2, HEIGHT))
# Update the display
pygame.display.flip()
# Cap the frame rate
clock.tick(60)
Editor is loading...
Leave a Comment