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

12.2. Правилно распоређивање боја

Чињеница да су нијансе боја одређене бројевима између 0 и 255 нам омогућава и да аутоматски израчунамо нијансе боја тако да боје буду распоређене дуж неког дела спектра боја. Прикажимо ову технику кроз неколико примера.

Квадрати у нијансама црвене боје

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

Нијансе црвене боје су одређене тиме да садрже само црвену компоненту боје, док су зелена и плава на нули. Боје иду од чисте црвене ([255, 0, 0]), па до црне ([0, 0, 0]). Претпоставићемо да је разлика у количини светлости између сваке две суседне нијансе иста. Ако је та разлика r, тада је црвена компонента у нашим бојама редом 5r, 4r, 3r, 2r, r и 0. Пошто прва боја треба да буде најсветлија могућа, важи да је 5r=255, тј. да је r=51. Дакле, боје су редом одређене са [255, 0, 0], [204, 0, 0], [153, 0, 0], [102, 0, 0], [51, 0, 0] и [0, 0, 0]. Опет претпостављамо да су димензије квадрата 50 пута 50 пиксела, тако да квадрате редом распоређујемо дуж прозора димензије 300 пута 50 пиксела.

 
1
import pygame as pg
2
import pygamebg
3
4
(sirina, visina) = (300, 50) # otvaramo prozor
5
prozor = pygamebg.open_window(sirina, visina, "Kvadrati u nijansama crvene boje")
6
7
# crtamo 6 kvadrata
8
pg.draw.rect(prozor, [???, 0, 0], (???, 0, 50, 50))
9
pg.draw.rect(prozor, [???, 0, 0], (???, 0, 50, 50))
10
pg.draw.rect(prozor, [???, 0, 0], (???, 0, 50, 50))
11
pg.draw.rect(prozor, [???, 0, 0], (???, 0, 50, 50))
12
pg.draw.rect(prozor, [???, 0, 0], (???, 0, 50, 50))
13
pg.draw.rect(prozor, [0,   0, 0], (???, 0, 50, 50))
14
15
# prikazujemo prozor i čekamo da ga korisnik isključi
16
pygamebg.wait_loop()
17

(sest_nijansi_crvene)

Наравно, бољи кôд добијамо ако задатак решимо уз помоћ петље.

13
 
1
import pygame as pg
2
import pygamebg
3
4
(sirina, visina) = (300, 50) # otvaramo prozor
5
prozor = pygamebg.open_window(sirina, visina, "Kvadrati u nijansama crvene boje")
6
7
broj_kvadrata = 6
8
razmak = 255 / (broj_kvadrata -  1) # razmak između dve susedne nijanse
9
???
10
11
# prikazujemo prozor i čekamo da ga korisnik isključi
12
pygamebg.wait_loop()
13

(sest_nijansi_crvene_petlja)

Оптичка варка

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

Ефекат градијента ћеш постићи тако што ћеш ширином прозора распоредити 256 једнаких правоуганика, сваки обојен у различиту нијансу сиве боје.

17
 
1
import pygame as pg
2
import pygamebg
3
4
(sirina, visina) = (512, 250) # otvaramo prozor
5
prozor = pygamebg.open_window(sirina, visina, "Gradijent")
6
7
# bojimo pozadinu gradijentom tako što iscrtavamo 256 jednakih pravougaonika
8
???
9
10
# crtamo jednobojni sivi pravougaonik u sredini
11
sx = 0.75 * sirina  # širina pravougaonika je 3/4 širine prozora
12
sy = 50             # visina pravougaonika je 50 piksela
13
???
14
15
# prikazujemo prozor i čekamo da ga korisnik isključi
16
pygamebg.wait_loop()
17

(gradijent)

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