Как стать автором
Обновить

Python and PyGame. Работа с текстом.

В этом посте, я бы хотел остановиться на некоторых основных приемах работы с текстом, шрифтами в библиотеке PyGame. За основу будут взяты строки из документации, сдобренные наглядными примерами. И так, начнем:)


1. Введение.


Первое, что хотелось бы упомянуть, так это то, что текст, в PyGame, обрабатывается и выводится не как, собственно текст (каша, да?)), а как некая поверхность (в оригинале Surface), также как и любые другие объекты (фон, игровоые объекты). От сюда вытекает, что сначало его (текст), нужно отрендерить (собственно превратить строку в поверхность), а потом «нарисовать” методом blit поверх другой поверхности. Также, можно догадаться что по умолчанию нельзя взаимодействовать с выведенным текстом, так, как мы привыкли, т.е. выделять, копировать.

2. Описание модуля pygame.font.


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

pygame.font.init – собственно инициализация модуля font
pygame.font.quit – соответсвенно «разинициализация” :)
pygame.font.get_default_font – возвращает имя шрифта по умолчанию
pygame.font.get_fonts – возвращает список всех доступных в системе шрифтов pygame.font.match_font – ищет заданный шрифт в системе, и выводит путь до него pygame.font.Font – создает новый объект (FontObject) для использования в программе.

Например:
Создадим окно и объект шрифт, из *.tff шрифта Arial, размером 25.
  1. # -*- coding: cp1251 -*-
  2. # Пример работы со шрифтом и текстом в  pygame.
  3. from pygame import *
  4. import sys
  5. init()
  6. screen = display.set_mode((320, 240))
  7. # Заливаем окно черным цветом
  8. screen.fill((0, 0, 0))
  9. # Устанавливаем название окна
  10. display.set_caption('font_example')
  11. font.init()
  12. path = font.match_font("arial")
  13. Font = font.Font(path, 25)


Модуль позволяет работать с *.ttf файлами шрифтов. Остановимся подробнее на методах, применимых к функции pygame.font.Font. Она содержит все необходимое для отрисовки текста:
Font.render – рендерит исходный текст (строку) в поверхность.
Font.render (text, antialias, color, background=None): return Surface
где:
text – строка, которую будем выводить на экран. Не поддерживается перенос строк, поэтому непечатные символы будет напечатаны в виде крягозяк))).
antialias – сглаживание. Для хорошего вида, лучше всегда ставить 1
color – цвет текста в виде кортежа (R, G, B)
background – фон. Также кортеж (R, G, B)

Пример:
  1. text = 'hello world!'
  2. # Рендерим
  3. a = Font.render(text, 1, (100, 100, 100))
  4. # Рисуем отрендеренный текст в созданном окне
  5. screen.blit(a, (160,110))
  6. while 1:
  7.     for i in event.get():
  8.         if i.type == QUIT: # Обрабатываем событие щелчка по крестику закрытия окна
  9.             sys.exit()
  10.     display.flip() # Обновляем экран



Font.set_underline (int) / Font.set_bold (int) / Font.set_italic (int) — делают шрифт соответсвенно подчеркнутым, жирным и курсивом. В качестве аргуемента принимают:
0 или False – не делать ничего, и все остальные цифры или True – применить. Должно стоять до рендеринга текста.
Font.get_underline / Font.get_bold / Font.get_italic – проверяют, является ли текст, подчеркнутым, жирным или курсивом. Возвращает или True или False.

3. Итого.


Вот и все. Я описал основные, на мой взгляд методы форматирования текста в pygame. Если же, при помощи событий, организовать перехват нажатий клавиш, то можно сделать простой ввод \ вывод данных в игре или игро-подобном приложении.
______________________
Текст подготовлен в Хабра Редакторе от © SoftCoder.ru
Теги:
Хабы:
Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.