Найти в Дзене

Урок 31. Ввод пароля в окне Pygame 🔐🐱🐍

Сегодня мы сделаем настоящий экран входа в игре!
Не просто ввод в консоли — а красивое окно pygame с фоном, строкой ввода и проверкой пароля. Пуфик решил:
— В мой секретный клуб теперь можно попасть только через игровое окно! А Пайти добавил:
— И обязательно используем проверку условий python! Сегодня вы узнаете: Подготовьте две картинки: Положите их в папку с программой. 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.tim
Оглавление

Сегодня мы сделаем настоящий экран входа в игре!

Не просто ввод в консоли — а красивое
окно pygame с фоном, строкой ввода и проверкой пароля.

Пуфик решил:

— В мой секретный клуб теперь можно попасть только через игровое окно!

А Пайти добавил:

— И обязательно используем проверку условий python!

🎮 Что мы научимся делать

Сегодня вы узнаете:

  • как выполняется в pygame создание окна
  • как задать в pygame размер окна
  • как установить в pygame название окна
  • как сделать в pygame ввод и вывод текста
  • как работает в python проверка нескольких условий
  • как показывать картинку в окне pygame если пароль введен правильно

🖼 Что нам понадобится

Подготовьте две картинки:

  • background.jpg — заставка с замком или тайной дверью
Эта иллюстрация создана специально для нашего канала PythonLand
Эта иллюстрация создана специально для нашего канала PythonLand
  • success.jpg — картинка, которая появится после правильного пароля
Эта иллюстрация создана специально для нашего канала PythonLand
Эта иллюстрация создана специально для нашего канала PythonLand

Положите их в папку с программой.

Эта иллюстрация создана специально для нашего канала PythonLand
Эта иллюстрация создана специально для нашего канала PythonLand

🐍 Полная программа

-4
-5
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))

Что происходит:

  1. Загружается картинка.
  2. Она растягивается под размер окна.

То же самое делаем для картинки успеха.

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

Корректно закрываем программу.

💡 Важно понять главное

  1. Мы собираем текст из нажатых клавиш.
  2. Каждый кадр заново рисуем фон.
  3. Поверх фона рисуем текст и звёздочки.

Pygame — это как сцена в театре:

каждый кадр декорации ставятся заново.

🐾 Как это работает в игре

✨ На экране — красивая заставка

✨ Вы вводите пароль

✨ Звёздочки появляются вместо букв

✨ Нажимаете Enter

✨ Если всё правильно — открывается секретная картинка

Пуфик радостно подпрыгивает.

Пайти гордо шуршит кольцами.

🌟 Идеи для улучшения

Попробуйте добавить:

  • звук при успешном входе
  • красное сообщение при ошибке
  • ограничение на количество попыток
  • кнопку «Выход»

💡 Теперь вы умеете:

  • создавать настоящее окно pygame
  • работать с графикой
  • делать Pygame ввод
  • использовать проверка условий python
  • применять python проверка нескольких условий в игровой среде

Это уже шаг к созданию собственной игры!