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()