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


import pgzrun


WIDTH = 800
HEIGHT = 600
TITLE = "Урок 6. Поймай мяч"

# Ракетка
racket_x = 400
racket_y = 550
racket_w = 120
racket_h = 20

# Мяч
ball_x = 400
ball_y = 100
vx = 2
vy = 2
radius = 15

# Счёт
score = 0

def draw():
    # Рисуем ракетку
    screen.draw.filled_rect(Rect((racket_x - racket_w // 2, racket_y), (racket_w, racket_h)), (0, 200, 100))

    # Рисуем мяч
    screen.draw.filled_circle((ball_x, ball_y), radius, (255, 200, 0))

    # Выводим счёт
    screen.draw.text("Счёт: " + str(score), (20, 20), fontsize=40, color=(255, 255, 255))

def update():
    global ball_x, ball_y, vx, vy, score

    # Двигаем мяч
    ball_x = ball_x + vx
    ball_y = ball_y + vy

    # Отскок от стенок
    if ball_x + radius > WIDTH:
        vx = -vx
    if ball_x - radius < 0:
        vx = -vx
    if ball_y - radius < 0:
        vy = -vy

    # Если мяч упал ниже экрана — конец игры
    if ball_y - radius > HEIGHT:
        exit()

    # Прямоугольники для проверки столкновения
    ball_rect = Rect((ball_x - radius, ball_y - radius), (radius * 2, radius * 2))
    racket_rect = Rect((racket_x - racket_w // 2, racket_y), (racket_w, racket_h))

    # Если мяч коснулся ракетки — отбиваем и увеличиваем счёт
    if ball_rect.colliderect(racket_rect):
        if vy > 0:
            vy = -vy
            score = score + 1

def on_key_down(key):
    global racket_x

    # Двигаем ракетку стрелками
    if key == keys.LEFT:
        racket_x = racket_x - 40
    if key == keys.RIGHT:
        racket_x = racket_x + 40

pgzrun.go()