$$ \newcommand{\floor}[1]{\left\lfloor{#1}\right\rfloor} \newcommand{\ceil}[1]{\left\lceil{#1}\right\rceil} \renewcommand{\mod}{\,\mathrm{mod}\,} \renewcommand{\div}{\,\mathrm{div}\,} \newcommand{\metar}{\,\mathrm{m}} \newcommand{\cm}{\,\mathrm{cm}} \newcommand{\dm}{\,\mathrm{dm}} \newcommand{\litar}{\,\mathrm{l}} \newcommand{\km}{\,\mathrm{km}} \newcommand{\s}{\,\mathrm{s}} \newcommand{\h}{\,\mathrm{h}} \newcommand{\minut}{\,\mathrm{min}} \newcommand{\kmh}{\,\mathrm{\frac{km}{h}}} \newcommand{\ms}{\,\mathrm{\frac{m}{s}}} \newcommand{\mss}{\,\mathrm{\frac{m}{s^2}}} \newcommand{\mmin}{\,\mathrm{\frac{m}{min}}} \newcommand{\smin}{\,\mathrm{\frac{s}{min}}} $$

Prijavi problem


Obeleži sve kategorije koje odgovaraju problemu

Još detalja - opišite nam problem


Uspešno ste prijavili problem!
Status problema i sve dodatne informacije možete pratiti klikom na link.
Nažalost nismo trenutno u mogućnosti da obradimo vaš zahtev.
Molimo vas da pokušate kasnije.

Час 2 - кругови, правоугаоници, елипсе

Цртање кругова

Библиотека PyGame омогућава и једноставно цртање кругова, коришћењем функције pg.draw.circle. Параметри функције су редом:

  • прозор на коме се црта,

  • боја којом се црта,

  • уређени пар (обавезно целих бројева) којим се задају координате центра круга,

  • полупречник круга (обавезно цео број).

Након полупречника је могуће задати и дебљину круга у пикселима (у том случају се црта само кружна линија, као што је урађено у случају црвеног круга). Ако се тај параметар изостави, онда се црта круг који је испуњен бојом (као што је урађено у случају плавог круга).

Илуструјмо цртање кругова наредним примером (наведен је само његов централни део, а да би он могао да функционише ван прегледача веба, потребно је да се наведе цео програм укључујући и почетни и завршни део, који је идентичан у свим програмима у овом поглављу).

Цртање кругова

Првим позивом функције pg.draw.circle нацртана је црвена кружница дебљине 2, са центром у тачки \((50, 50)\), полупречника 30, док је другим позивом нацртан плави круг са центром у тачки \((150, 150)\), полупречника 50 пиксела.

Провери своје знање о цртању кругова тако што ћеш одговорити на наредних неколико питања.

    Q-14: Шта се задаје приликом цртања круга?

  • Координате горњег левог темена
  • Координате горњег левог темена се задају код елипсе и правоугаоника
  • Полупречник
  • Тачно
  • Координате центра
  • Тачно
  • Ширина и висина
  • Ширина и висина се задају код елипсе и правоугаоника
  • Боја
  • Тачно

    Q-15: Да би се нацртао круг са центром у тачки \((100, 100)\), полупречника \(30\) пиксела, дебљине \(5\) пиксела, потребно је извршити позив функције:

  • pg.draw.circle(prozor, boja, 100, 100, 30, 5)
  • Покушај поново
  • pg.draw.circle(prozor, boja, (100, 100), 30, 5)
  • Тачно
  • pg.draw.circle(prozor, boja, (100, 100, 30, 5))
  • Покушај поново
  • pg.draw.circle(prozor, boja, (100, 100), (30, 5))
  • Покушај поново

    Q-16: Разлика између pg.draw.circle(prozor, boja, (cx, cy), r) и pg.draw.circle(prozor, boja, (cx, cy), r, 1) је то што се:

  • у другом случају црта елипса чије су полуосе r и 1.
  • Покушај поново
  • у другом случају круг попуњава бојом.
  • Покушај поново
  • у првом случају црта круг, а у другом само кружница.
  • Тачно
  • у првом случају црта само кружница, а у другом круг.
  • Покушај поново

Кроз наредни задатак увежбај цртање кругова.

Три круга

Напиши програм који исцртава три круга чији је центар у центру екрана. Највећи треба да буде црвен и да има полупречник 100 и да буде црвен, средњи полупречник 75 и да буде плав, а најмањи полупречник 50 и да буде зелен.

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

Цртање квадрата и правоугаоника

У библиотеци PyGame можемо једноставно цртати квадрате и правоугаонике. За то користимо функцију pg.draw.rect. Параметри функције су редом:

  • прозор на коме се црта,

  • боја,

  • уређена четворка бројева чија прва два броја представљају координате горњег левог темена правоугаоника, а друга два представљају редом његову ширину и висину.

Прво се црта црни правоугаоник чије се горње лево теме налази на координатама \((50, 50)\) (прва је координата \(x\) која одређује удаљеност тог темена од леве ивице прозора, а друга је координата \(y\) која одређује удаљеност тог темена од горње ивице прозора), чија је ширина 200 пиксела, а висина 100 пиксела. Затим се црта црвени правоугаоник чије се горње лево теме налази на координатама \((75, 75)\), чија је ширина 150, а висина 50 пиксела. Први позив функције pg.draw.rect садржи и четврти параметар - број 1, који представља дебљину оквира правоугаоника у пикселима.

Нагласимо да се на овај начин могу цртати само правоугаоници и квадрати који су постављени тако да су им странице паралелне ивицама прозора тј. који су постављени хоризонтално или вертикално и који не могу бити искошени.

Провери своје знање о цртању правоугаоника тако што ћеш одговорити на наредних неколико питања.

    Q-17: Шта се НЕ задаје приликом цртања правоугаоника?

  • Координате горњег левог темена
  • Покушај поново
  • Дебљина
  • Покушај поново
  • Ширина
  • Покушај поново
  • Висина
  • Покушај поново
  • Координате центра
  • Тачно

    Q-18: Да би се нацртао правоугаоник чије је горње лево теме у тачки \((100, 100)\), чија је ширина \(30\), а висина \(50\) пиксела, потребно је извршити позив функције:

  • pg.draw.rect(prozor, boja, 100, 100, 30, 50)
  • Покушај поново
  • pg.draw.rect(prozor, boja, (100, 100), (30, 50))
  • Покушај поново
  • pg.draw.rect(prozor, boja, (100, 100), 30, 50)
  • Покушај поново
  • pg.draw.rect(prozor, boja, (100, 100, 30, 50))
  • Тачно

    Q-19: Да би се нацртао правоугаоник чије је горње лево теме у тачки \((80, 80)\), а доње десно теме у тачки \((130, 160)\), потребно је извршити позив функције:

  • pg.draw.rect(prozor, boja, (80, 80, 50, 80))
  • Тачно
  • pg.draw.rect(prozor, boja, (80, 80), (130, 160))
  • Покушај поново
  • pg.draw.rect(prozor, boja, (80, 80, 130, 160))
  • Покушај поново
  • pg.draw.rect(prozor, boja, (80, 80), (50, 80))
  • Покушај поново

Кроз наредних неколико задатака увежбај цртање правоугаоника и квадрата.

Пет квадрата у пет боја

Напиши програм који исцртава редом црвени, зелени, плави, црни и бели квадрат димензије 50 пута 50 пиксела, постављене хоризонтално једног до другог.

Пошто су сви квадрати димензије 50 пута 50 пиксела, правимо прозор чија је димензија 250 пута 50 пиксела. Координата сваког горњег левог темена квадрата је 0 (пошто се та темена налазе на горњој ивици екрана). Координата \(x\) сваког наредног темена је 50 пиксела већа од претходне. Дакле, горња лева темена тих пет квадрата редом имају координате \((0, 0)\), \((50, 0)\), \((100, 0)\), \((150, 0)\) и \((200, 0)\). Упиши ове координате и димензије правоугаоника на одговарајућа места у програму, а затим покрени програм и провери да ли је твоје решење исправно.

Глава робота

Нацртај наранџасту главу робота квадратног облика, која има црне очи и уста квадратног облика. Док помераш миша, координате можеш да очитаваш у наслову прозора (координате свих темена и димензије свих квадрата су дељиве са 10).

Цртање елипси

Библиотека PyGame нам омогућава и да цртамо елипсе коришћењем функције pg.draw.ellipse. Елипса се црта тако што се зада описани правоугаоник око ње и то помоћу истих параметара као у случају цртања правоугаоника функцијом pg.draw.rect. У специјалном случају када је описани правоугаоник око елипсе квадрат (када су му ширина и дужина једнаке), тада је елипса кружног облика.

Дакле, елипса се црта помоћу функције pg.draw.ellipse, чији су параметри редом:

  • прозор у ком се црта

  • боја којом се црта,

  • уређена четворка којом се представља правоугаоник у који је елипса уписана (задају се прво координате горњег левог темена правоугаоника, затим његова ширина и висина).

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

Илуструјмо цртање елипсе наредним примером.

Елипсе

Примети да је око сваке од три нацртане елипсе нацртан и њен описани правоугаоник и да се у свим случајевима аргументи функције pg.draw.ellipse потпуно поклапају са аргументима функције pg.draw.rect.

Провери своје знање о цртању елипси тако што ћеш одговорити на наредних неколико питања.

Наведи уређени пар координата центра елипсе нацртане са pg.draw.ellipse(50, 60, 70, 80).

    Q-20: Круг има свој полупречник, а елипсе имају своје полуосе. Мала полуоса је најмање растојање од центра до линије елипсе, а велика полуоса је највеће растојање од центра до линије елипсе. Које од наредних елипси имају малу полуосу 30, а велику 40 пиксела?

  • pg.draw.ellipse(prozor, pg.Color("red"), (100, 100, 40, 30))
  • Покушај поново
  • pg.draw.ellipse(prozor, pg.Color("red"), (30, 40, 40, 30))
  • Покушај поново
  • pg.draw.ellipse(prozor, pg.Color("red"), (100, 100, 60, 80))
  • Тачно
  • pg.draw.ellipse(prozor, pg.Color("red"), (50, 70, 80, 60))
  • Тачно
  • pg.draw.ellipse(prozor, pg.Color("red"), (80, 60, 100, 120))
  • Покушај поново

    Q-21: Којом наредбом се исцртава кружна линија?

  • pg.draw.ellipse(prozor, pg.Color("red"), (100, 100, 40, 30))
  • Покушај поново
  • pg.draw.ellipse(prozor, pg.Color("red"), (30, 40, 50, 50), 2)
  • Тачно
  • pg.draw.ellipse(prozor, pg.Color("red"), (100, 100, 60, 80), 3)
  • Покушај поново
  • pg.draw.ellipse(prozor, pg.Color("red"), (50, 70, 60, 60))
  • Покушај поново

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

Домаћи задатак - Паткица

Напиши програм који исцртава паткицу, каква се добије када притиснеш дугме „Прикажи пример”. Очитај координате са тог цртежа имајући у виду да су све значајне координате дељиве са 10.

Пробај да погодиш бројеве у наредном програму, тако да се исцрта једна лепа паткица (као што је речено у тексту задатка, сви аргументи позива функције за цртање елипси су дељиви са 10). Очи паткице су кружног облика, али и оне се могу нацртати функцијом за цртање елипсе. Глава и уста су елипсе које су уоквирене црном линијом. То се постиже тако што прво нацртамо обојену попуњену елипсу, а затим нацртамо елипсоидну линију танком црном бојом.