Сегодня мы сделаем настоящий экран входа в игре!
Не просто ввод в консоли — а красивое окно pygame с фоном, строкой ввода и проверкой пароля.
Пуфик решил:
— В мой секретный клуб теперь можно попасть только через игровое окно!
А Пайти добавил:
— И обязательно используем проверку условий python!
🎮 Что мы научимся делать
Сегодня вы узнаете:
- как выполняется в pygame создание окна
- как задать в pygame размер окна
- как установить в pygame название окна
- как сделать в pygame ввод и вывод текста
- как работает в python проверка нескольких условий
- как показывать картинку в окне pygame если пароль введен правильно
🖼 Что нам понадобится
Подготовьте две картинки:
- background.jpg — заставка с замком или тайной дверью
- success.jpg — картинка, которая появится после правильного пароля
Положите их в папку с программой.
🐍 Полная программа
import pygame
import sys
pygame.init()
# --- pygame создание окна ---
width, height = 800, 500 # pygame размер окна
screen = pygame.display.set_mode((width, height))
# --- pygame название окна ---
pygame.display.set_caption("Секретный вход Пуфика")
font = pygame.font.Font(None, 40)
# Загружаем картинки
background = pygame.image.load("background.jpg")
background = pygame.transform.scale(background, (width, height))
success_image = pygame.image.load("success.jpg")
success_image = pygame.transform.scale(success_image, (width, height))
password = ""
correct_password = "Milk2024"
show_success = False
clock = pygame.time.Clock()
running = True
while running:
clock.tick(60)
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
# --- Pygame ввод ---
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_BACKSPACE:
password = password[:-1]
elif event.key == pygame.K_RETURN:
# --- проверка условий python ---
length_ok = len(password) >= 8
digit_ok = any(symbol.isdigit() for symbol in password)
upper_ok = any(symbol.isupper() for symbol in password)
# python проверка нескольких условий
if password == correct_password and length_ok and digit_ok and upper_ok:
show_success = True
else:
password = ""
else:
password += event.unicode
# Отображение
if show_success:
screen.blit(success_image, (0, 0))
text_surface = font.render("Добро пожаловать!", True, (50, 255, 250))
screen.blit(text_surface, (260, 60))
else:
screen.blit(background, (0, 0))
text_surface = font.render("Введите пароль:", True, (255, 255, 255))
screen.blit(text_surface, (280, 60))
hidden_password = "*" * len(password)
password_surface = font.render(hidden_password, True, (255, 255, 0))
screen.blit(password_surface, (350, 100))
pygame.display.flip()
pygame.quit()
sys.exit()
🧠 Разбираем программу по шагам
1️⃣ Импорт и запуск Pygame
import pygame
import sys
pygame.init()
Что здесь происходит?
- import pygame — подключаем библиотеку.
- import sys — нужен для корректного завершения программы.
- pygame.init() — запускаем все модули Pygame.
Без pygame.init() окно просто не откроется.
2️⃣ pygame создание окна
width, height = 800, 500
screen = pygame.display.set_mode((width, height))
Здесь:
- pygame размер окна — 800 на 500 пикселей.
- set_mode() создаёт само окно.
Если изменить числа — изменится размер.
3️⃣ pygame название окна
pygame.display.set_caption("Секретный вход Пуфика")
Это заголовок окна.
Он отображается в верхней части программы.
4️⃣ Подготовка шрифта
font = pygame.font.Font(None, 40)
- None — используется стандартный шрифт.
- 40 — размер текста.
Этот шрифт нужен для вывода надписей.
5️⃣ Загрузка изображений
background = pygame.image.load("background.jpg")
background = pygame.transform.scale(background, (width, height))
Что происходит:
- Загружается картинка.
- Она растягивается под размер окна.
То же самое делаем для картинки успеха.
6️⃣ Переменные программы
password = ""
correct_password = "Milk2024"
show_success = False
Здесь:
- password — то, что вводит пользователь.
- correct_password — правильный пароль.
- show_success — флаг, показывать ли вторую картинку.
Флаг — это переменная типа True/False.
7️⃣ Главный игровой цикл
running = True
while running:
Игровые программы работают в цикле.
Он выполняется много раз в секунду.
Без цикла окно сразу закроется.
8️⃣ Ограничение скорости
clock = pygame.time.Clock()
clock.tick(60)
Программа обновляется 60 раз в секунду.
Это делает её плавной.
9️⃣ Обработка событий — Pygame ввод
for event in pygame.event.get():
Pygame постоянно проверяет:
- закрыли ли окно
- нажали ли клавишу
- двигали ли мышь
Закрытие окна
if event.type == pygame.QUIT:
running = False
Если нажали крестик — цикл заканчивается.
Ввод текста
if event.type == pygame.KEYDOWN:
Это означает: клавиша нажата.
Удаление символа
if event.key == pygame.K_BACKSPACE:
password = password[:-1]
Срез [:-1] удаляет последний символ строки.
Проверка при нажатии Enter
elif event.key == pygame.K_RETURN:
Когда нажали Enter — запускается проверка.
🔐 Проверка условий python
length_ok = len(password) >= 8
digit_ok = any(symbol.isdigit() for symbol in password)
upper_ok = any(symbol.isupper() for symbol in password)
Разберём:
1. Проверка длины
len(password) >= 8
Пароль не короче 8 символов.
2. Проверка цифры
isdigit() проверяет, цифра ли это.
any() — возвращает True, если найден хотя бы один подходящий символ.
3. Проверка заглавной буквы
isupper() проверяет, большая ли буква.
🧠 python проверка нескольких условий
if password == correct_password and length_ok and digit_ok and upper_ok:
Здесь используется and.
Это значит:
✔ пароль совпадает
✔ длина подходит
✔ есть цифра
✔ есть заглавная буква
Если хоть одно условие неверно — вход запрещён.
🔟 Добавление символов
else:
password += event.unicode
Что здесь происходит?
Когда нажимается клавиша:
- Если это не Backspace
- И не Enter
Тогда выполняется else.
Что такое event.unicode?
Это символ, который нажал пользователь.
Например:
- нажали A → event.unicode = "A"
- нажали 5 → event.unicode = "5"
- нажали m → event.unicode = "m"
Что делает password += event.unicode?
Знак += означает «добавить».
Если пароль был:
Mil
И нажали k, то станет:
Milk
То есть программа постепенно собирает слово из нажатых букв.
Вот так работает Pygame ввод текста.
1️⃣1️⃣ Отображение экрана
Если пароль верный
if show_success:
screen.blit(success_image, (0, 0))
Объясняем просто:
screen — это наше окно.
success_image — картинка успеха.
blit() можно представить как команду:
«Нарисуй эту картинку вот здесь».
Числа (0, 0) — это координаты.
- 0 по горизонтали
- 0 по вертикали
Это значит: начать рисовать с самого верхнего левого угла окна.
Если пароль ещё вводится
screen.blit(background, (0, 0))
Точно так же рисуется обычный фон.
Важно понимать:
В Pygame экран перерисовывается каждый кадр.
Сначала фон, потом текст, потом другие элементы.
Как будто художник каждый раз заново рисует всю сцену.
1️⃣2️⃣ Отображение текста
text_surface = font.render("Введите пароль:", True, (255, 255, 255))
screen.blit(text_surface, (280, 180))
Разбираем по частям.
Что делает font.render()?
Он создаёт картинку с текстом.
Pygame не пишет текст напрямую.
Он сначала превращает текст в изображение.
То есть:
"Введите пароль:"
становится маленькой картинкой с буквами.
Параметры:
- текст
- True — сглаживание (буквы выглядят красивее)
- (255, 255, 255) — цвет
Это цвет в формате RGB:
- 255 — красный
- 255 — зелёный
- 255 — синий
Все вместе дают белый цвет.
После этого:
screen.blit(text_surface, (280, 180))
«Кладёт» этот текст на экран.
1️⃣3️⃣ Скрытие пароля
hidden_password = "*" * len(password)
Вот здесь очень интересный момент.
Что делает len(password)?
Считает количество символов.
Если введено:
Milk
Длина = 4.
Что делает "*" * 4?
Python умеет умножать строки.
"*" * 4
Получится:
****
Поэтому:
Если введено 5 символов → выводится *****
Если введено 8 символов → выводится ********
Почему так делают?
Чтобы никто не видел настоящий пароль.
Это делает программу более «взрослой» и похожей на настоящий экран входа.
1️⃣4️⃣ Обновление экрана
pygame.display.flip()
Без этого изменения не появятся.
1️⃣5️⃣ Завершение
pygame.quit()
sys.exit()
Корректно закрываем программу.
💡 Важно понять главное
- Мы собираем текст из нажатых клавиш.
- Каждый кадр заново рисуем фон.
- Поверх фона рисуем текст и звёздочки.
Pygame — это как сцена в театре:
каждый кадр декорации ставятся заново.
🐾 Как это работает в игре
✨ На экране — красивая заставка
✨ Вы вводите пароль
✨ Звёздочки появляются вместо букв
✨ Нажимаете Enter
✨ Если всё правильно — открывается секретная картинка
Пуфик радостно подпрыгивает.
Пайти гордо шуршит кольцами.
🌟 Идеи для улучшения
Попробуйте добавить:
- звук при успешном входе
- красное сообщение при ошибке
- ограничение на количество попыток
- кнопку «Выход»
💡 Теперь вы умеете:
- создавать настоящее окно pygame
- работать с графикой
- делать Pygame ввод
- использовать проверка условий python
- применять python проверка нескольких условий в игровой среде
Это уже шаг к созданию собственной игры!