Загрузка данных


import pygame
import random

pygame.init()

# Размеры окна
WIDTH = 1000
HEIGHT = 800
screen = pygame.display.set_mode((WIDTH, HEIGHT))

clock = pygame.time.Clock()
FPS = 30

# Переменные для ракеток
x_1 = 0
y_1 = 300
x_2 = WIDTH - 20
y_2 = 300
width = 20
height = 180
speed = 8
flag = 0
flag_2 = 0

# Шрифт
my_font = pygame.font.SysFont(None, 35)
text_win_left = my_font.render("Левая сторона победила", False, (255, 100, 100))
text_win_right = my_font.render("Правая сторона победила", False, (100, 100, 255))

def reset_game():
    """Функция для сброса состояния игры"""
    global x, y, flag_x, flag_y, R, color_circle, speed, game_over
    x = WIDTH // 2
    y = HEIGHT // 2
    flag_x = 1
    flag_y = 1
    color_circle = (random.randint(0, 255), random.randint(0, 255), random.randint(0, 255))
    speed = 10
    game_over = False

# Переменные для мяча
flag_x = 1
flag_y = 1
speed_1 = 10
R = 20
color_circle = (random.randint(0, 255), random.randint(0, 255), random.randint(0, 255))

# Флаг завершения игры
game_over = False

# Инициализация игры
reset_game()

# Основной цикл
running = True
while running:
    # Обработка событий
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False

        if not game_over:
            if event.type == pygame.KEYDOWN:
                if event.key == pygame.K_w:
                    flag = -1
                if event.key == pygame.K_s:
                    flag = 1
                if event.key == pygame.K_UP:
                    flag_2 = -1
                if event.key == pygame.K_DOWN:
                    flag_2 = 1
            if event.type == pygame.KEYUP:
                if event.key == pygame.K_w or event.key == pygame.K_s:
                    flag = 0
                if event.key == pygame.K_UP or event.key == pygame.K_DOWN:
                    flag_2 = 0
        else:
            # Обработка нажатия мыши по кнопке "Начать заново"
            if event.type == pygame.MOUSEBUTTONDOWN:
                mouse_pos = event.pos
                button_rect = pygame.Rect(WIDTH//2 - 100, HEIGHT//2 + 50, 200, 50)
                if button_rect.collidepoint(mouse_pos):
                    reset_game()

    # Логика ракеток
    if not game_over:
        y_1 += speed * flag
        y_2 += speed * flag_2
        y_1 = max(0, min(HEIGHT - height, y_1))
        y_2 = max(0, min(HEIGHT - height, y_2))

        # Логика мяча
        x += speed_1 * flag_x
        y += speed_1 * flag_y

        # Отскок мяча от верхней и нижней границы
        if y - R <= 0:
            flag_y = 1
        if y + R >= HEIGHT:
            flag_y = -1

        # Отскок мяча от левой ракетки
        if (x - R < x_1 + width) and (y > y_1) and (y < y_1 + height) and (flag_x < 0):
            flag_x = 1
            color_circle = (random.randint(0, 255), random.randint(0, 255), random.randint(0, 255))
        # Отскок мяча от правой ракетки
        if (x + R > x_2) and (y > y_2) and (y < y_2 + height) and (flag_x > 0):
            flag_x = -1
            color_circle = (random.randint(0, 255), random.randint(0, 255), random.randint(0, 255))
        
        # Проигрыш за левый или правый
        if x - R <= 0:
            game_over = True
            winner_text = text_win_right  # Правая сторона победила
        if x + R >= WIDTH:
            game_over = True
            winner_text = text_win_left  # Левая сторона победила

    # Отрисовка
    screen.fill((0, 0, 0))
    if game_over:
        # Вывод сообщение о победе
        screen.blit(winner_text, (350, 350))
        # Рисуем кнопку "Начать заново"
        button_rect = pygame.Rect(WIDTH//2 - 100, HEIGHT//2 + 50, 200, 50)
        pygame.draw.rect(screen, (0, 255, 0), button_rect)
        button_text = my_font.render("Начать заново", True, (0, 0, 0))
        text_rect = button_text.get_rect(center=button_rect.center)
        screen.blit(button_text, text_rect)
    else:
        # Отрисовка мяча и ракеток
        pygame.draw.circle(screen, color_circle, (x, y), R)
        pygame.draw.rect(screen, (255, 0, 0), (x_1, y_1, width, height))
        pygame.draw.rect(screen, (0, 0, 255), (x_2, y_2, width, height))
    pygame.display.flip()

    clock.tick(FPS)

pygame.quit()