Садржај
1. Програмирање у пајтону - Увод у Pygame
15. Цртање уз помоћ петљи - обнављање
16. Завршни квиз

4.1. Дужи

Све функције за цртање у библиотеци Pygame почињу са pg.draw.

../_images/duz.png

Дуж \(AB\) се црта позивом функције pg.draw.line. Позив ове функције изгледа овако: pg.draw.line(prozor, boja, (А_x, А_y), (B_x, B_y), debljina). Први параметар је прозор на коме желимо да нацртамо дуж (увек ћемо га називати баш prozor). Други параметар је боја дужи, а у прошлом делу си научио/научила како се наводи боја. Следе почетна и крајња тачка (\(A\) и \(B\)) чије координате треба да унесеш у облику уређених парова (прво иде координата \(x\) , a затим координата \(y\)). Последњи параметар је дебљина линије којом се исцртава дуж, задата у пикселима.

Пример једног позивa функције изгледао би овако:

pg.draw.line(prozor, pg.Color("black"), (100, 100), (300, 300), 5)

Редослед аргумената наведених у позиву функције је важан! Провери да ли тај редослед знаш.

  1. координате почетне тачке

  2. дебљина линије

  3. прозор

  4. координате крајње тачке

  5. боја

Сложи аргументе према правилном редоследу:

(Наведи редне бројеве аргумената према редоследу којим се аргументи морају навести, на пример 12435)

Одговор:

Провежбајмо сада цртање дужи кроз неколико задатака. Ови задаци ће ти помоћи да боље упознаш координатни систем који користимо за позиционирање тачака на прозору.

Слово А

Напиши програм који помоћу три дужи исцртава слово A.

За цртање слова \(A\) потребно је исцртати три дужи (леву косу линију, десну косу линију и хоризонталну црту). Величина прозора је \(200\) x \(200\) и о овоме би требало водити рачуна приликом одређивања координата тачака које представљају темена дужи. Спајањем одговарајућих тачака, формирају се дужи.

Приметимо да смо у решењу увели променљиву debljina да бисмо дебљину све три линије могли да контролишемо само на једном месту. Ова променљива је постављена (иницијализована) на почетку на 10 (наредбом доделе debljina = 10) и променом вредности ове променљиве мења се дебљина све три дужи које чине наше слово. И у наредним програмима ћемо уводити помоћне променљиве које ће нам помоћи да лакше пишемо и прилагођавамо наше програме.

../_images/slovoA.png

На слици можеш видети координате тачака. Тачка \(A\) је од координатног почетка удаљена \(50\) пиксела по оси \(x\) и \(150\) пиксела по оси \(y\), зато су координате тачке \(A\) \(= (50, 150)\). На исти начин се одређују координате осталих тачака. Упиши их у програм уместо упитника, а затим покрени програм и провери да ли се добија слово А (једну линију смо већ уцртали).

Плус

Напиши програм који исцртава симбол плус у центру прозора димензије 200x200 пиксела. Симбол се састоји од једне хоризонталне и једне вертикалне дужи дужине 100 пиксела и дебљине 10 пиксела.

У решењу је већ нацртана вертикална дуж, а твој задатак је да нацрташ хоризонталну дуж дужине 100 пиксела, зато добро промисли где ћеш поставити почетну, односно крајњу тачку дужи. Ширина и висина прозора су 200 пиксела. Анализирај позив функције pg.draw.line(prozor, pg.Color("black"), (100, 50), (100, 150), debljina) и мало га прилагоди.

Видиш да је на месту аргумента за боју наведен позив функције pg.Color("black") који враћа црну боју. Координате темена вертикалне дужи су (100, 50) и (100, 150). Код хоризонталне дужи \(y\) координата треба да буде одређена тако да се дуж налази на средини прозора по висини, док се \(x\) координата простире од четвртине, па до три четвртине ширине прозора.

Потребно је да направиш позив pg.draw.line(prozor, pg.Color("black"), (50, 100), (150, 100), debljina).

Обојени плус

Хајде да бојимо! Применимо боје на претходни пример тако да позадина буде жуте боје, хоризонтална линија црвене, а вертикална плаве.

У решењу примени задавање боја како смо то радили у лекцији Боје. Овај пут потребно је и да самостално унесеш све параметре функције за цртање линије.

Решење 1: Боје можемо навести помоћу имена.

Решење 2: Боје можемо навести помоћу и помоћу система RGB.

Најважније из ове лекције

  • Позив функције за цртање дужи \(AB\) у општем облику изгледа овако:

    pg.draw.line(prozor, boja, (А_x, А_y), (B_x, B_y), debljina).

  • Дебљина линије је последњи аргумент и он може бити изостављен.

(Created using Swinx, RunestoneComponents and PetljaDoc)
© 2022 Petlja
A- A+