Цртање правих линија и многоуглова

Функције за цртање правих линија и многоуглова сличне су функцијама за цртање правоугаоника, елипси и кругова, које смо већ упознали. Параметри prozor, boja и debljina се и овде користе, и то са истим значењем као и раније. Нове параметре ћемо објаснити на месту појављивања.

Поновићемо и овде „празан” програм, који само рукује библиотеком ПајГејм и прозором за цртање (а сам не црта ништа), за случај да желите нешто да испробате.

Цртање линије

За цртање линије се користи функција pg.draw.line, са или без праметра који представља дебљину.

pg.draw.line(prozor, boja, tacka1, tacka2, debljina)
pg.draw.line(prozor, boja, tacka1, tacka2)
  • Параметри tacka1, tacka2 су тачке на екрану, које представљају крајеве дужи. Подсетимо се још једном, тачка се задаје као торка или листа дужине 2. Елементи ове торке или листе су координате тачке у прозору у коме цртамо.

  • Код ове функције изостављање дебљине има другачије значење него у осталим функцијама, а то је да се користи подразумевана дебљина линије од 1 пиксел.

На пример, наредбом:

исцртавамо плаву линију дебљине 2 пиксела од тачке \((20, 10)\) до тачке \((40, 30)\).

../_images/drawing_line.png

Цртање многоугла

За цртање многоугла се користи функција pg.draw.polygon, која такође има два облика:

pg.draw.polygon(prozor, boja, lista_tacaka, debljina)
pg.draw.polygon(prozor, boja, lista_tacaka)
  • Параметар lista_tacaka представља листу темена многоугла који цртамо. На пример [(50, 250), (150, 150), (250, 250)] представља листу од 3 тачке.

  • Овде поново облик функције без праметра debljina користимо када желимо да многоугао буде цео обојен наведеном бојом (ако наведемо дебљину, црта се многугаона линија те дебљине).

На пример, следећа наредба црта троугао обојен бојом \((0, 100, 36)\). Темена троугла су \((50, 100)\), \((150, 150)\) и \((150, 50)\).

../_images/drawing_polygon.png

Поред ових набројаних и описаних функција, у модулу pg.draw постоје и друге функције за цртање, али се овде нећемо њима бавити. Уколико вас интересује више о тим функцијама, комплетније информације можете наћи на пример нa https://www.pygame.org/docs/ref/draw.html

Функције за цртање - питања

Проверите колико знате о функцијама за цртање:

         Q-49: Којим редом се ови аргументи задају у позиву функције `pg.draw.line`прозор
боја
координате првог темена
координате другог темена
дебљина
        

    Q-50: Желимо да нацртамо троугао. У ком облику могу да се задају координате тачака?

  • pg.draw.polygon(prozor, boja, [(0, 0), (50, 100), (100, 0)])
  • Тачно
  • pg.draw.polygon(prozor, boja, (0, 0), (50, 100), (100, 0))
  • Покушајте поново
  • pg.draw.polygon(prozor, boja, (0, 0, 50, 100, 100, 0))
  • Покушајте поново
  • pg.draw.polygon(prozor, boja, [0, 0, 50, 100, 100, 0])
  • Покушајте поново

    Q-51: Који од наредних полигона се не може нацртати помоћу више позива функције pg.draw.line?

  • pg.draw.polygon(prozor, boja, [(0, 0), (50, 100), (100, 0)], 7)
  • Тачно
  • pg.draw.polygon(prozor, boja, [(0, 0), (0, 50), (50, 50), (50, 0)])
  • Покушајте поново
  • pg.draw.polygon(prozor, boja, [(0, 0), (50, 100), (100, 0)])
  • Покушајте поново
  • pg.draw.polygon(prozor, boja, [(0, 0), (0, 50), (50, 50), (50, 0)], 4)
  • Тачно
    Q-52: Упарите наредбе за цртање и облике који се њима цртају. Покушајте поново!
  • Дуж
  • pg.draw.line
  • Многоугао
  • pg.draw.polygon
  • Правоугаоник
  • pg.draw.rect
  • Круг
  • pg.draw.circle
         Q-53: Поређајте у складу са типичним редоследом аргумената у функцијама за цртање:prozor
boja
koordinate
debljina
        

    Q-54: Приликом цртања ког од наведених облика се координате задају у облику листе уређених парова?

  • Круг
  • Покушајте поново
  • Елипса
  • Покушајте поново
  • Многоугао
  • Тачно
  • Дуж
  • Покушајте поново
  • Квадрат
  • Покушајте поново

Цртежи по упутствима

Страшило: Нацртајте страшило на белој позадини. Оно се састоји од следећих делова:

  • глава: црна кружна линија дебљине 6, са центром у тачки (150, 70), полупречника 50

  • тело: црна права линија дебљине 6, од тачке (150, 120) до тачке (150, 300)

  • руке: црна права линија дебљине 6, од тачке (80, 170) до тачке (220, 170)

  • лева нога: црна права линија дебљине 6, од тачке (150, 300) до тачке (90, 480)

  • десна нога: црна права линија дебљине 6, од тачке (150, 300) до тачке (210, 480)

Јелка: Нацртајте јелку на белој позадини. Она се састоји од следећих делова:

  • стабло: правоугаоник попуњен бојом (97, 26, 9), величине 40 х 50, са горњим левим теменом у тачки (130, 250)

  • горњи део крошње: троугао попуњен бојом (0, 100, 36), са теменима (50, 250), (150, 150) и (250, 250)

  • средњи део крошње: троугао попуњен бојом (0, 100, 36), са теменима (75, 200), (150, 100) и (225, 200)

  • доњи део крошње: троугао попуњен бојом (0, 100, 36), са теменима (100, 150), (150, 50) и (200, 150)

Цртежи изненађења

Да бисте у задацима који следе видели цртеж, потребно је да напишете тражене наредбе и покренете свој програм.

изненађење 1 - спојите тачке: Дата су темена многоугла. Нацртајте на позадини боје „darkgreen” тај многоугао, попуњен бојом „khaki”.

изненађење 2:

Бојом „limegreen” исцртајте:

  • Пуну елипсу која је уписана у правоугаоник, чије је горње лево теме (75, 100), ширина му је 150, а висина 180;

  • Линију дебљине 6, од тачке (130, 110) до тачке (120, 20);

  • Још једну линију дебљине 6, од тачке (170, 110) до тачке (180, 20);

  • Попуњен круг полупречника 10 пиксела, са центром у тачки (120, 20);

  • Попуњен круг полупречника 10 пиксела, са центром у тачки (180, 20);

Црном бојом исцртајте још две пуне елипсе, и то:

  • једну уписану у правоугаоник чије је горње лево теме (110, 140), ширина му је 30, а висина 50;

  • другу уписану у правоугаоник чије је горње лево теме (160, 140), ширина му је 30, а висина 50;