12. Модуль Font

Классы Font и SysFont находятся в модуле pygame.font и предназначены для работы со шрифтами и текстом. Чтобы создавать от этих классов объекты, модуль font необходимо предварительно инициализировать командой font.init(), или выполнить инициализацию всех вложенных модулей библиотеки Pygame командой init().


От классов font.Font и font.SysFont создаются объекты-шрифты. Второй класс берет системные шрифты, поэтому конструктору достаточно передать имя шрифта. Конструктору Font надо передавать имя файла шрифта. Например:

font.SysFont('arial', 36)
font.Font('/адрес/Arial.ttf', 36)
Узнать, какие шрифты есть в системе, можно с помощью функции get_fonts():

Узнать адрес конкретного шрифта

print ( font.get_fonts() ) 

print ( font.match_font('verdana') )
Вы можете скопировать шрифт в каталог программы и обращаться к нему без адреса

font.Font('Verdana.ttf', 24)
Метод render() экземпляра Font создает поверхность (экземпляр Surface), на которой "написан" переданный в качестве аргумента текст, шрифтом, к которому применяется метод. Вторым аргументом указывается сглаживание, третьим – цвет текста. При необходимости четвертым аргументом можно указать цвет фона.

f1 = font.Font(None, 36) # Шрифт по умолчанию
text1 = f1.render('Hello Привет', True, (180, 0, 0))
 
f2 = font.SysFont('serif', 48)
text2 = f2.render("World Мир", False, (0, 180, 0))
 
window.blit ( text1, (10, 50) )
window.blit ( text2, (10, 100) )
Задачи
У объектов Rect есть метод contains(), который проверяет, заключает ли в себе одна область (к которой применяется метод) другую (которая передается в качестве аргумента).

Напишите программу, в которой, если одна поверхность попадает в пределы другой, то на главной поверхности появляется какая-либо надпись. "Опасность" экземпляр Surface должен переноситься с помощью мыши.