Урок 4. Создаем Hello, World! в графике

“Hello, World!” Звучит знакомо? Настало время для изучения pygame и первых попыток написать графическое приложение с его использованием.py0007

На скриншоте виден результат выполнения программы. Графическое окно с фоновым рисунком и карандашом, выполняющим функцию курсора мышки. Вы можете сразу запустить скрипт, но чтобы было понятнее, мы разберем его по шагам.

py0008

Несколько замечаний:

  • для этого приложения нам потребуется 2 картинки. Фоновая картинка (hello.jpg), размер 640х480. Курсор мыши (pen.png), размер 80х80. Названия и сами изображения картинок могут быть любыми, главное соблюдайте размер;
  • как вы могли увидеть на скриншоте кода, изображения  у меня лежат в папке data, т.к. при наличие большого количества файлов к приложению любой пользователь запутается, где что лежит. Поэтому лучше сразу учиться все сортировать по папкам;
  • для работы графических приложений на питоне необходимо установить pygame, это можно сделать с помощью команды sudo apt-get install python-pygame.

Приступим к детальному рассмотрению кода.

1.background_image_filename = ‘data/hello.jpg’

mouse_image_filename = ‘data/pen.png’

С помощью этих строк, язык питона инициализирует наши изображения.

2. import pygame - импортируем библиотеку pygame.

3. from pygame.locals import * - импортируем функции, относящиеся к библиотеке pygame.

4. from sys import exit – модуль sys мы берем из стандартной библиотеки питона, а вот exit поможет пользователю выйти из приложения (обратите внимание, что выход из приложения в данном случае возможен только при нажатие кнопки “закрыть окно”).

5. pygame.init() - одновременно и простая и важная часть кода, которая инициализирует подмодули библиотеки pygame.

6. screen = pygame.display.set_mode((640, 480), 0, 32)) – создаем окно размером 640х480 пикселей; второе значение у нас число 0, которое является флагом, об этом мы будем говорить более подробно в других статьях, а пока оставим цифру 0; цифра 32 это глубина цвета, она может быть 8, 15, 16, 24 и 32, в случае если вы поставите цифру 0, то питон автоматически поставит глубину цвета равную вашему рабочему столу.

7. pygame.display.set_caption(“Hello, World!”)создаем название окна нашего приложения.

8. background = pygame.image.load (background_image_filename).convert()функция load считывает местоположение указанного файла и выводит на поверхность окна приложения изображение hello.png; функция .convert () конвертирует изображение hello.jpg в тот же формат, что и наш дисплей.

9. mouse_cursor = pygame.image.load (mouse_image_filename).convert_alpha() – аналогично п.8, за исключением считывания местоположения курсора мыши, а не фона, и использование alpha, которое необходимо при работе с изображениями, содержащими прозрачные элементы (в противном случае вместо прозрачности вы получите черные пятна).

10. while True: - это основной цикл приложения, который будет выполняться, пока пользователь сам не закроет окно.

11. for event in pygame.event.get ():

if event.type == QUIT:

exit ()

Эта часть присутствует в любом приложение. Она отвечает за прерывание программы. В нашем случае, когда пользователь нажмет кнопку окна “закрыть окно”, программа прервет свое выполнение.

12. screen.blit (background, (0, 0)) – чтобы наше фоновое изображение hello.jpg отображалось в окне, мы используем функцию blit, а (0, 0) это начало координат от которых рисуется изображение hello.jpg. Чтобы было проще понять, просто закомментируйте эту строку в коде и попробуйте запустить приложение (чтобы закомментировать строку нужно поставить перед началом строки знак #).

13. x, y = pygame.mouse.get_pos() – модуль pygame.mouse содержит все необходимое для работы с мышью, включая get_pos для отслеживания ее координат.

14. x -= mouse_cursor.get_width() / 2

y -= mouse_cursor.get_height() / 2

Чтобы наш курсор находился по центру, используем немного математики. Попробуйте убрать - или / 2 и посмотрите на результат.

15. screen.blit (mouse_cursor, (x, y)) – аналогично п.12 используем функцию blit, только вместо нулей мы подставляем координаты нашего курсора.

16. pygame.display.update() – при использовании функции blit, наши изображения сперва помещаются в буфер, который не виден на экране, поэтому мы используем pygame.display.update(), чтобы пользователь видел плавную анимацию изображение без мерцания.

Скачать готовую папку с приложением можно здесь >>

Напоследок. Не бойтесь копаться в коде. Например, в п.12 и п.14 я предложил попробовать изменить чуточку код, чтобы наглядно разобраться.

Комментариев нет

xione от августа 27 2009 в изучение pygame

Трэкбек URI | RSS комментариев

Оставить комментарий