Processing math: 100%

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. Параметри функције су редом:

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

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

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

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

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

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

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

 
1
# bojimo pozadinu u belo
2
prozor.fill(pg.Color("white"))
3
4
# crtamo crveni krug
5
pg.draw.circle(prozor, pg.Color("red"), (50, 50), 30, 2)
6
7
# crtamo plavi krug
8
pg.draw.circle(prozor, pg.Color("blue"), (150, 150), 30)
9
10

(krugovi)

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

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

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







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






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






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

Три круга

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

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

19
 
1
import pygame as pg
2
import pygamebg
3
4
# otvaramo prozor
5
(sirina, visina) = (200, 200)
6
prozor = pygamebg.open_window(sirina, visina, "Три круга")
7
8
# bojimo pozadinu u belo
9
prozor.fill(pg.Color("white"))
10
# crveni krug
11
pg.draw.circle(prozor, pg.Color("red"), (100, 100), 100)
12
# plavi krug
13
pg.draw.circle(prozor, ???, (???, ???), ???)
14
# zeleni krug
15
???
16
17
# prikazujemo prozor i čekamo da ga korisnik isključi
18
pygamebg.wait_loop()
19

(tri_kruga_crtez)

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

У библиотеци 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 пиксела, потребно је извршити позив функције:






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






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

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

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

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

19
 
1
import pygame as pg
2
import pygamebg
3
4
(sirina, visina) = (250, 50) # otvaramo prozor
5
prozor = pygamebg.open_window(sirina, visina, "Пет квадрата у пет боја")
6
7
# crtamo 5 kvadrata
8
# crveni
9
pg.draw.rect(prozor, pg.Color("red"),   (0, 0, 50, 50))
10
# zeleni
11
pg.draw.rect(prozor, pg.Color("green"), (???, ???, 50, 50))
12
# plavi
13
pg.draw.rect(???)
14
# crni
15
# beli
16
17
# prikazujemo prozor i čekamo da ga korisnik isključi
18
pygamebg.wait_loop()
19

(pet_kvadrata_u_pet_boja)

Глава робота

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

14
 
1
import math
2
import pygame as pg
3
import pygamebg
4
5
(sirina, visina) = (300, 300) # otvaramo prozor
6
prozor = pygamebg.open_window(sirina, visina, "Глава робота")
7
8
# glava
9
# oci
10
# usta
11
12
# prikazujemo prozor i čekamo da ga korisnik isključi
13
pygamebg.wait_loop()
14

(glava_robota_pomoc)

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

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

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

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

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

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

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

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

Елипсе

19
 
1
# bojimo pozadinu u belo
2
prozor.fill(pg.Color("white"))
3
4
# crtamo crvenu elipsu
5
pg.draw.ellipse(prozor, pg.Color("red"), (0, 0, 100, 150), 2)
6
# crtamo opisani pravougaonik
7
pg.draw.rect(prozor, pg.Color("red"), (0, 0, 100, 150), 1)
8
9
# crtamo plavu elipsu
10
pg.draw.ellipse(prozor, pg.Color("blue"), (100, 0, 100, 100), 2)
11
# crtamo opisani pravougaonik
12
pg.draw.rect(prozor, pg.Color("blue"), (100, 0, 100, 100), 1)
13
14
# crtamo zelenu elipsu
15
pg.draw.ellipse(prozor, pg.Color("green"), (0, 150, 200, 50))
16
# crtamo opisani pravougaonik
17
pg.draw.rect(prozor, pg.Color("green"), (0, 150, 200, 50), 1)
18
19

(elipse)

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

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

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




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







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






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

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

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

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

21
 
1
import math
2
import pygame as pg
3
import pygamebg
4
5
(sirina, visina) = (400, 400) # otvaramo prozor
6
prozor = pygamebg.open_window(sirina, visina, "Паткица")
7
8
# bojimo pozadinu u zeleno
9
prozor.fill(pg.Color("green"))
10
11
# crtamo glavu
12
pg.draw.ellipse(prozor, pg.Color("yellow"), (???, ???, ???, ???))
13
pg.draw.ellipse(prozor, pg.Color("black"), (???, ???, ???, ???), 1)
14
# crtamo usta
15
pg.draw.ellipse(prozor, pg.Color("red"), (???, ???, ???, ???))
16
pg.draw.ellipse(prozor, pg.Color("black"), (???, ???, ???, ???), 1)
17
# crtamo oči
18
19
# prikazujemo prozor i čekamo da ga korisnik isključi
20
pygamebg.wait_loop()
21

(patkica)