В этом посте, я бы хотел остановиться на некоторых основных приемах работы с текстом, шрифтами в библиотеке PyGame. За основу будут взяты строки из документации, сдобренные наглядными примерами. И так, начнем:)
Первое, что хотелось бы упомянуть, так это то, что текст, в PyGame, обрабатывается и выводится не как, собственно текст (каша, да?)), а как некая поверхность (в оригинале Surface), также как и любые другие объекты (фон, игровоые объекты). От сюда вытекает, что сначало его (текст), нужно отрендерить (собственно превратить строку в поверхность), а потом «нарисовать” методом blit поверх другой поверхности. Также, можно догадаться что по умолчанию нельзя взаимодействовать с выведенным текстом, так, как мы привыкли, т.е. выделять, копировать.
Описание переведено из оригинальной документации. Там же, можно почерпнуть более полные сведения, т.к. здесь я приведу, на мой взгляд самое основное.
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.
Модуль позволяет работать с *.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)
Пример:
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.
Вот и все. Я описал основные, на мой взгляд методы форматирования текста в 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.
- # -*- coding: cp1251 -*-
- # Пример работы со шрифтом и текстом в pygame.
- from pygame import *
- import sys
- init()
- screen = display.set_mode((320, 240))
- # Заливаем окно черным цветом
- screen.fill((0, 0, 0))
- # Устанавливаем название окна
- display.set_caption('font_example')
- font.init()
- path = font.match_font("arial")
- 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)
Пример:
- text = 'hello world!'
- # Рендерим
- a = Font.render(text, 1, (100, 100, 100))
- # Рисуем отрендеренный текст в созданном окне
- screen.blit(a, (160,110))
- while 1:
- for i in event.get():
- if i.type == QUIT: # Обрабатываем событие щелчка по крестику закрытия окна
- sys.exit()
- 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. Если же, при помощи событий, организовать перехват нажатий клавиш, то можно сделать простой ввод \ вывод данных в игре или игро-подобном приложении.
______________________