Цртање текста¶
Програми који цртају, често уз слике исписују и разне поруке (вероватно сте и сами видели много примера). Ево како се то ради у ПајГејму:
Као што се види из примера, да би текст могао да буде приказан, прво треба креирати објекат који представља фонт. За то се користи функција pg.font.SysFont
, којој задајемо врсту и величину слова. Можемо да направимо и више оваквих објеката у случају да намеравамо да пишемо словима различитих величина или типова, а често нам је довољан и само један фонт.
Након прављења фонта, сваки пут када желимо да прикажемо неки текст, понављамо следећа два корака:
Први корак је да се направи слика која садржи жељени текст. То постижемо помоћу функције
font.render
, где је font објекат фонта креиран на почетку. Параметри функције font.render су редом текст који се приказује, логичка вредност која одређује да ли ће се цртати лепшим линијама (тј. користити такозвана техника антиалијасинга) и на крају боја којом ће се текст исписивати.Други корак је исти као код приказивања било које готове слике - приказујемо слику добијену у претходном кораку на позицији коју одаберемо. При томе за рачунање позиције можемо по потреби (као у примеру) да користимо величину слике.
Задаци - светлеће рекламе¶
Сигурно сте виђали светлеће рекламе са неонским цевима у облику слова. Оне привлаче пажњу тако што се различите групе слова укључују и искључују неким задатим редоследом који се понавља. Следи неколико примера инспирисаних таквим светлећим рекламама.
Треперећи текст: Напишите програм који приказује треперећи текст, слично као у примеру (дугме „Прикажи пример”).
Ако желите, можете да промените текст, његову боју и величину, фонт, учесталост укључивања и искључивања, или било шта друго. Ако желите да што приближније опонашате наш програм, он користи слова типа „Arial” величине 80, а приказује текст у сваком другом фрејму, центриран, при брзини од 3 фрејма у секунди.
Помоћ: Од глобалних променљивих које описују сцену, довољна је једна логичка променљива која говори да ли треба приказати дати текст. Овој променљивој ћемо у функцији nov_frejm() мењати вредност, тако да она има вредност True у сваком другом фрејму.
Додавање слова: Пробајте сада да имитирате овај пример. У првом фрејму се приказује само прво слово, а у сваком следећем по једно слово више док се не прикажу сва слова. Након тога следи један фрејм у коме се не приказује ништа, па три фрејма са свим укљученим словима, а затим се све понавља. Брзина приказивања у нашем програму је 2 фрејма у секунди.
Помоћ: ево неких коментара који могу да помогну при решавању задатка
Из описа (и посматрања примера) можемо да закључимо да пун циклус садржи четири фрејма више него што има слова у тексту.
Потребну величину прозора можемо да одредимо на основу дужине текста, као у претходном примеру.
Текст се увек приказује на истој позицији (исти је горњи леви угао текста). Према томе, позицију можемо да израчунамо једном, у главном делу програма.
Можемо да користимо бројач фрејмова као глобалну променљиву, па у функцији nov_frejm() помоћу if наредби да на основу вредности бројача установимо да ли и који део текста треба приказати.
Појединачна слова: У овом примеру се прво приказује свако слово посебно, а затим се сва слова 3 пута укључе и искључе. Можете ли да поновите ово понашање?
Помоћ: позиције приказивања појединих слова су редом (0, 0), (50, 0), (100, 0), (150, 0) итд. Број фрејмова у циклусу је за 6 већи од броја слова у тексту. Остале идеје су врло сличне онима из претходних примера.
Покретна слова: Овај пример је другачији по томе што се слова померају. Покушајте и њега да реализујете.
Помоћ: Једном када формирате слику од датог текста, задатак постаје врло сличан задатку са аутом који се креће.
На крају, ако желите, овде можете да направите светлећу рекламу по вашој жељи.