🎮 Все игры 🧱 Арканоид
1 2 3 4 5
Урок 4

Кирпичи

Что ты увидишь Сверху появляется стена из разноцветных кирпичей. Мяч их ломает, идут очки. Файл: step4_bricks.py
⬇️ Скачать код урока

📝 Делаем стену кирпичей — это список

Как в Змейке мы хранили тело змейки списком — так здесь храним кирпичи. Только это список прямоугольников pygame.Rect:

COLS, ROWS = 10, 5
BRICK_W = WIDTH // COLS
BRICK_H = 24
GAP = 3
TOP = 40
bricks = []
for row in range(ROWS):
    for col in range(COLS):
        x = col * BRICK_W + GAP
        y = TOP + row * BRICK_H + GAP
        bricks.append(pygame.Rect(x, y, BRICK_W - GAP * 2, BRICK_H - GAP * 2))

📝 Ломаем кирпич

    # Проверяем каждый кирпич: попали — убираем и отскакиваем
    for brick in bricks:
        if ball_rect.colliderect(brick):
            bricks.remove(brick)
            dy = -dy
            score += 1
            break        # один кирпич за кадр

🔍 Что тут происходит

Два цикла for — это сетка

Внешний for row идёт по строкам, внутренний for col — по столбцам. Для каждой пары (строка, столбец) считаем место кирпича и кладём его в список. GAP — щель между кирпичами, чтобы была сетка.

Проверяем весь список

Каждый кадр пробегаем список кирпичей и проверяем colliderect с мячом. Попали — bricks.remove(brick) убирает кирпич из списка (он исчезает с экрана), мяч отскакивает (dy = -dy), +1 очко.

⚠️ Зачем break Мы выходим из цикла сразу после первого попадания. Во-первых, нельзя удалять из списка и продолжать его перебирать — будет ошибка. Во-вторых, за один кадр логично разбить один кирпич.
💡 Цвет по строке При рисовании цвет берём по номеру строки: BRICK_COLORS[row % 5] — получаются разноцветные ряды, как в настоящем Арканоиде.
🎮 Попробуй сам 1. Больше кирпичей: ROWS = 7.
2. Дай за кирпич 10 очков.
3. Сделай GAP = 0 — кирпичи вплотную.
← НазадУрок 3 — Отскок от ракетки