Search
Write a publication
Pull to refresh

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
Tags:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.