В этой программе мы создаём интерактивный графический градусник, который показывает температуру на экране.
Игрок может изменять температуру клавишами на клавиатуре, а столбик градусника будет подниматься или опускаться, меняя цвет.
Также программа выводит текстовую реакцию на температуру.
Программа
import pygame
import sys
pygame.init()
# Размеры окна
WIDTH, HEIGHT = 400, 600
screen = pygame.display.set_mode((WIDTH, HEIGHT))
pygame.display.set_caption("Градусник")
font = pygame.font.SysFont("arial", 24)
# Диапазон температур
MIN_TEMP = -10
MAX_TEMP = 40
temperature = 20 # начальное значение
def get_color(temp):
if temp < 0:
return (0, 100, 255) # синий
elif temp < 20:
return (0, 200, 255) # голубой
elif temp < 30:
return (0, 200, 0) # зелёный
else:
return (255, 0, 0) # красный
def get_reaction(temp):
if temp < 0:
return "Мороз!"
elif temp <= 15:
return "Прохладно."
elif temp <= 25:
return "Комфортно."
else:
return "Жарко!"
clock = pygame.time.Clock()
running = True
while running:
clock.tick(60)
screen.fill((240, 240, 240))
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
# Управление стрелками
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_UP:
temperature += 1
if event.key == pygame.K_DOWN:
temperature -= 1
temperature = max(MIN_TEMP, min(MAX_TEMP, temperature))
# Рамка градусника
pygame.draw.rect(screen, (0, 0, 0), (170, 100, 60, 350), 3)
# Вычисляем уровень заполнения
percent = (temperature - MIN_TEMP) / (MAX_TEMP - MIN_TEMP)
fill_height = int(350 * percent)
# Цвет столбика
color = get_color(temperature)
# Заполнение
pygame.draw.rect(
screen,
color,
(173, 100 + 350 - fill_height, 54, fill_height)
)
# Текст температуры
temp_text = font.render(f"{temperature} °C", True, (0, 0, 0))
screen.blit(temp_text, (150, 470))
# Реакция
reaction_text = font.render(get_reaction(temperature), True, (0, 0, 0))
screen.blit(reaction_text, (130, 520))
pygame.display.flip()
pygame.quit()
sys.exit()
1. Подключение библиотек
import pygame
import sys
Здесь подключаются две библиотеки.
pygame — используется для создания графического окна, рисования фигур и обработки событий.
sys — позволяет корректно завершить программу.
2. Инициализация Pygame
pygame.init()
Эта команда запускает все внутренние модули Pygame:
- графику
- обработку событий
- шрифты
- таймер
Без неё программа работать не сможет работать.
3. Создание окна программы
WIDTH, HEIGHT = 400, 600
screen = pygame.display.set_mode((WIDTH, HEIGHT))
pygame.display.set_caption("Градусник")
Здесь задаются параметры окна.
WIDTH и HEIGHT — ширина и высота окна.
В нашем случае:
- ширина — 400 пикселей
- высота — 600 пикселей
Команда set_caption() устанавливает заголовок окна.
4. Создание шрифта
font = pygame.font.SysFont("arial", 24)
Эта строка создаёт шрифт для отображения текста.
Параметры:
- "arial" — название шрифта
- 24 — размер шрифта
Этот шрифт будет использоваться для вывода температуры и текста реакции.
5. Диапазон температур
MIN_TEMP = -10
MAX_TEMP = 40
Мы задаём минимальную и максимальную температуру, которую может показывать градусник.
Это нужно, чтобы ограничить значения.
Например:
- нельзя сделать температуру меньше −10
- нельзя поднять её выше +40
6. Начальная температура
temperature = 20
При запуске программы градусник показывает 20 градусов.
7. Функция выбора цвета
def get_color(temp):
Эта функция определяет цвет столбика градусника.
if temp < 0:
Температура ниже нуля — синий цвет.
elif temp < 20:
От 0 до 19 градусов — голубой цвет.
elif temp < 30:
От 20 до 29 — зелёный цвет.
else:
30 градусов и выше — красный цвет.
Это делает градусник более наглядным.
8. Функция реакции на температуру
def get_reaction(temp):
Эта функция выводит текстовую оценку температуры.
Варианты реакции:
0 Мороз
0–15 Прохладно
16–25 Комфортно
выше 25 Жарко
9. Таймер программы
clock = pygame.time.Clock()
Таймер позволяет контролировать скорость работы программы.
10. Основной цикл программы
while running:
Этот цикл называется игровым циклом.
Он выполняется постоянно, пока окно программы открыто.
11. Ограничение частоты кадров
clock.tick(60)
Программа обновляется 60 раз в секунду.
12. Очистка экрана
screen.fill((240, 240, 240))
Каждый кадр экран очищается.
Цвет (240,240,240) — светло-серый.
13. Обработка событий
for event in pygame.event.get():
Программа проверяет, что делает пользователь.
Закрытие окна
if event.type == pygame.QUIT:
running = False
Если пользователь нажал крестик — программа завершается.
14. Управление температурой
if event.type == pygame.KEYDOWN:
Срабатывает при нажатии клавиши.
Клавиша вверх
if event.key == pygame.K_UP:
temperature += 1
Температура увеличивается.
Клавиша вниз
if event.key == pygame.K_DOWN:
temperature -= 1
Температура уменьшается.
15. Ограничение температуры
temperature = max(MIN_TEMP, min(MAX_TEMP, temperature))
Эта строка не позволяет выйти за пределы диапазона.
16. Рисование рамки градусника
pygame.draw.rect(screen, (0, 0, 0), (170, 100, 60, 350), 3)
Здесь рисуется контур градусника.
Параметры:
- 170 — положение по X
- 100 — положение по Y
- 60 — ширина
- 350 — высота
- 3 — толщина линии
17. Расчёт уровня столбика
percent = (temperature - MIN_TEMP) / (MAX_TEMP - MIN_TEMP)
Эта формула переводит температуру в процент заполнения.
Высота столбика
fill_height = int(350 * percent)
Чем выше температура — тем выше столбик.
18. Определение цвета
color = get_color(temperature)
Здесь вызывается функция, которая выбирает цвет.
19. Рисование столбика температуры
pygame.draw.rect(
screen,
color,
(173, 100 + 350 - fill_height, 54, fill_height)
)
Это заливка градусника.
Интересный момент:
Столбик рисуется снизу вверх, поэтому используется формула:
100 + 350 - fill_height
20. Отображение температуры
temp_text = font.render(f"{temperature} °C", True, (0, 0, 0))
screen.blit(temp_text, (150, 470))
На экране появляется надпись, например:
20 °C
21. Отображение реакции
reaction_text = font.render(get_reaction(temperature), True, (0, 0, 0))
screen.blit(reaction_text, (130, 520))
Показывается сообщение:
- Мороз
- Прохладно
- Комфортно
- Жарко
22. Обновление экрана
pygame.display.flip()
После всех изменений экран перерисовывается.
23. Завершение программы
pygame.quit()
sys.exit()
Программа корректно закрывает все модули.
Итог
В этой программе мы научились:
- создавать графическое окно
- рисовать фигуры
- использовать функции
- обрабатывать нажатия клавиш
- изменять данные в реальном времени
- отображать текст
- создавать интерактивный интерфейс
Такой проект — отличный первый шаг к созданию графических приложений и игр на Python.