Crtanje pravih linija i mnogouglova¶
Funkcije za crtanje pravih linija i mnogouglova slične su funkcijama za crtanje pravougaonika, elipsi i krugova, koje smo već upoznali. Parametri prozor, boja i debljina se i ovde koriste, i to sa istim značenjem kao i ranije. Nove parametre ćemo objasniti na mestu pojavljivanja.
Ponovićemo i ovde „prazan” program, koji samo rukuje bibliotekom PajGejm i prozorom za crtanje (a sam ne crta ništa), za slučaj da želite nešto da isprobate.
Crtanje linije¶
Za crtanje linije se koristi funkcija pg.draw.line
, sa ili bez prametra koji predstavlja debljinu.
pg.draw.line(prozor, boja, tacka1, tacka2, debljina)
pg.draw.line(prozor, boja, tacka1, tacka2)
Parametri tacka1, tacka2 su tačke na ekranu, koje predstavljaju krajeve duži. Podsetimo se još jednom, tačka se zadaje kao torka ili lista dužine 2. Elementi ove torke ili liste su koordinate tačke u prozoru u kome crtamo.
Kod ove funkcije izostavljanje debljine ima drugačije značenje nego u ostalim funkcijama, a to je da se koristi podrazumevana debljina linije od 1 piksel.
Na primer, naredbom:
iscrtavamo plavu liniju debljine 2 piksela od tačke \((20, 10)\) do tačke \((40, 30)\).
Crtanje mnogougla¶
Za crtanje mnogougla se koristi funkcija pg.draw.polygon
, koja takođe ima dva oblika:
pg.draw.polygon(prozor, boja, lista_tacaka, debljina)
pg.draw.polygon(prozor, boja, lista_tacaka)
Parametar lista_tacaka predstavlja listu temena mnogougla koji crtamo. Na primer [(50, 250), (150, 150), (250, 250)] predstavlja listu od 3 tačke.
Ovde ponovo oblik funkcije bez prametra debljina koristimo kada želimo da mnogougao bude ceo obojen navedenom bojom (ako navedemo debljinu, crta se mnogugaona linija te debljine).
Na primer, sledeća naredba crta trougao obojen bojom \((0, 100, 36)\). Temena trougla su \((50, 100)\), \((150, 150)\) i \((150, 50)\).
Pored ovih nabrojanih i opisanih funkcija, u modulu pg.draw
postoje i druge funkcije za crtanje, ali se ovde nećemo njima baviti. Ukoliko vas interesuje više o tim funkcijama, kompletnije informacije možete naći na primer na https://www.pygame.org/docs/ref/draw.html
Funkcije za crtanje - pitanja¶
Proverite koliko znate o funkcijama za crtanje:
Q-49: Kojim redom se ovi argumenti zadaju u pozivu funkcije `pg.draw.line`prozor
boja
koordinate prvog temena
koordinate drugog temena
debljina
- pg.draw.polygon(prozor, boja, [(0, 0), (50, 100), (100, 0)])
- Tačno
- pg.draw.polygon(prozor, boja, (0, 0), (50, 100), (100, 0))
- Pokušajte ponovo
- pg.draw.polygon(prozor, boja, (0, 0, 50, 100, 100, 0))
- Pokušajte ponovo
- pg.draw.polygon(prozor, boja, [0, 0, 50, 100, 100, 0])
- Pokušajte ponovo
Q-50: Želimo da nacrtamo trougao. U kom obliku mogu da se zadaju koordinate tačaka?
- pg.draw.polygon(prozor, boja, [(0, 0), (50, 100), (100, 0)], 7)
- Tačno
- pg.draw.polygon(prozor, boja, [(0, 0), (0, 50), (50, 50), (50, 0)])
- Pokušajte ponovo
- pg.draw.polygon(prozor, boja, [(0, 0), (50, 100), (100, 0)])
- Pokušajte ponovo
- pg.draw.polygon(prozor, boja, [(0, 0), (0, 50), (50, 50), (50, 0)], 4)
- Tačno
Q-51: Koji od narednih poligona se ne može nacrtati pomoću više poziva funkcije pg.draw.line
?
-
Q-52: Uparite naredbe za crtanje i oblike koji se njima crtaju.
Pokušajte ponovo!
- Duž
- pg.draw.line
- Mnogougao
- pg.draw.polygon
- Pravougaonik
- pg.draw.rect
- Krug
- pg.draw.circle
Q-53: Poređajte u skladu sa tipičnim redosledom argumenata u funkcijama za crtanje:prozor
boja
koordinate
debljina
- Krug
- Pokušajte ponovo
- Elipsa
- Pokušajte ponovo
- Mnogougao
- Tačno
- Duž
- Pokušajte ponovo
- Kvadrat
- Pokušajte ponovo
Q-54: Prilikom crtanja kog od navedenih oblika se koordinate zadaju u obliku liste uređenih parova?
Crteži po uputstvima¶
Strašilo: Nacrtajte strašilo na beloj pozadini. Ono se sastoji od sledećih delova:
glava: crna kružna linija debljine 6, sa centrom u tački (150, 70), poluprečnika 50
telo: crna prava linija debljine 6, od tačke (150, 120) do tačke (150, 300)
ruke: crna prava linija debljine 6, od tačke (80, 170) do tačke (220, 170)
leva noga: crna prava linija debljine 6, od tačke (150, 300) do tačke (90, 480)
desna noga: crna prava linija debljine 6, od tačke (150, 300) do tačke (210, 480)
Jelka: Nacrtajte jelku na beloj pozadini. Ona se sastoji od sledećih delova:
stablo: pravougaonik popunjen bojom (97, 26, 9), veličine 40 h 50, sa gornjim levim temenom u tački (130, 250)
gornji deo krošnje: trougao popunjen bojom (0, 100, 36), sa temenima (50, 250), (150, 150) i (250, 250)
srednji deo krošnje: trougao popunjen bojom (0, 100, 36), sa temenima (75, 200), (150, 100) i (225, 200)
donji deo krošnje: trougao popunjen bojom (0, 100, 36), sa temenima (100, 150), (150, 50) i (200, 150)
Crteži iznenađenja¶
Da biste u zadacima koji slede videli crtež, potrebno je da napišete tražene naredbe i pokrenete svoj program.
iznenađenje 1 - spojite tačke: Data su temena mnogougla. Nacrtajte na pozadini boje „darkgreen” taj mnogougao, popunjen bojom „khaki”.
iznenađenje 2:
Bojom „limegreen” iscrtajte:
Punu elipsu koja je upisana u pravougaonik, čije je gornje levo teme (75, 100), širina mu je 150, a visina 180;
Liniju debljine 6, od tačke (130, 110) do tačke (120, 20);
Još jednu liniju debljine 6, od tačke (170, 110) do tačke (180, 20);
Popunjen krug poluprečnika 10 piksela, sa centrom u tački (120, 20);
Popunjen krug poluprečnika 10 piksela, sa centrom u tački (180, 20);
Crnom bojom iscrtajte još dve pune elipse, i to:
jednu upisanu u pravougaonik čije je gornje levo teme (110, 140), širina mu je 30, a visina 50;
drugu upisanu u pravougaonik čije je gornje levo teme (160, 140), širina mu je 30, a visina 50;