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

Жизни, победа и рестарт

Что ты увидишь Готовую игру! Промахнулся — минус жизнь. Жизни кончились — «Игра окончена». Разбил все кирпичи — «Победа!». Пробел — заново. Файл: arkanoid.py
⬇️ Скачать готовую игру

📝 Три состояния игры

Вместо одного флага game_over заведём переменную state с тремя значениями: "play" (играем), "over" (проигрыш), "win" (победа).

def new_game():
    paddle_x = WIDTH // 2 - PADDLE_W // 2
    bx, by = WIDTH / 2, HEIGHT / 2
    dx, dy = 4.0, 4.0
    return paddle_x, bx, by, dx, dy, make_bricks(), 0, 3

state = "play"        # "play" | "over" | "win"

# Промахнулся мимо мяча — минус жизнь
    if by > HEIGHT:
        lives -= 1
        bx, by = WIDTH / 2, HEIGHT / 2
        dx, dy = 4.0, 4.0
        if lives <= 0:
            state = "over"

    # Кирпичей не осталось — победа!
    if not bricks:
        state = "win"

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

Почему state, а не game_over?

В прошлых играх хватало «да/нет». Здесь концовки две — победа и проигрыш. Удобно хранить одно слово-состояние и по нему решать, что рисовать и что делать.

if not bricks: — список пуст?

Пустой список в Python считается «ложью», поэтому if not bricks значит «если кирпичей не осталось». Все разбил — победа.

Рестарт

Пробел работает, только когда state != "play": зовём new_game() и снова ставим state = "play".

🏆 Поздравляю! Ты освоил отскок мяча — основу множества аркад: Пинг-понг, Сквош, да хоть футбол. И собрал полноценный Арканоид с победой и проигрышем!

🚀 Что дальше — задания со звёздочкой

ИдеяЧему научишься
Звук при отскоке/разбитииpygame.mixer (как в «Ловком коте»)
Ускорение мяча со временемработа со скоростью
Прочные кирпичи (2 удара)счётчик прочности у кирпича
Бонус: ракетка шире на 10 сектаймеры
Уровни: разные стены кирпичейнесколько раскладок

🖥️ Полный экран

Чтобы игра ощущалась как настоящая — разверни её на весь монитор. Мы добавили флаг pygame.SCALED и две клавиши:

screen = pygame.display.set_mode((WIDTH, HEIGHT))
fullscreen = False

# ... в цикле событий ...
if event.type == pygame.KEYDOWN:
    if event.key == pygame.K_f:                 # F — вкл/выкл полный экран
        fullscreen = not fullscreen
        flags = (pygame.SCALED | pygame.FULLSCREEN) if fullscreen else 0
        screen = pygame.display.set_mode((WIDTH, HEIGHT), flags)
    elif event.key == pygame.K_ESCAPE:
        pygame.quit(); sys.exit()             # ESC — выход

pygame.SCALED сам растягивает картинку 600×400 на весь экран — координаты в игре остаются те же, ничего пересчитывать не надо. F — включить/выключить полный экран, ESC — выйти.

← НазадУрок 4 — Кирпичи