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

Напиши програм који црта шест квадрата обојених у различите, правилно распоређене нијансе црвене боје (све дефинисане помоћу RGB система).
Нијансе црвене боје су одређене тиме да садрже само црвену компоненту
боје, док су зелена и плава на нули. Боје иду од чисте
црвене ([255, 0, 0]
), па до црне ([0, 0, 0]
). Претпоставићемо да је разлика
у количини светлости између сваке две суседне нијансе иста. Ако је та
разлика r
, тада је црвена компонента у нашим бојама редом
[255, 0, 0]
, [204, 0, 0]
, [153, 0, 0]
, [102, 0, 0]
, [51, 0, 0]
и [0, 0, 0]
.
Опет претпостављамо да су димензије квадрата 50 пута 50 пиксела, тако да квадрате редом
распоређујемо дуж прозора димензије 300 пута 50 пиксела.
import pygame as pg
import pygamebg
(sirina, visina) = (300, 50) # otvaramo prozor
prozor = pygamebg.open_window(sirina, visina, "Kvadrati u nijansama crvene boje")
# crtamo 6 kvadrata
pg.draw.rect(prozor, [???, 0, 0], (???, 0, 50, 50))
pg.draw.rect(prozor, [???, 0, 0], (???, 0, 50, 50))
pg.draw.rect(prozor, [???, 0, 0], (???, 0, 50, 50))
pg.draw.rect(prozor, [???, 0, 0], (???, 0, 50, 50))
pg.draw.rect(prozor, [???, 0, 0], (???, 0, 50, 50))
pg.draw.rect(prozor, [0, 0, 0], (???, 0, 50, 50))
# prikazujemo prozor i čekamo da ga korisnik isključi
pygamebg.wait_loop()
(sest_nijansi_crvene)
Наравно, бољи кôд добијамо ако задатак решимо уз помоћ петље.
import pygame as pg
import pygamebg
(sirina, visina) = (300, 50) # otvaramo prozor
prozor = pygamebg.open_window(sirina, visina, "Kvadrati u nijansama crvene boje")
broj_kvadrata = 6
razmak = 255 / (broj_kvadrata - 1) # razmak između dve susedne nijanse
???
# prikazujemo prozor i čekamo da ga korisnik isključi
pygamebg.wait_loop()
(sest_nijansi_crvene_petlja)
Оптичка варка¶

Позадину прозора обоји у нијансе сиве боје које се постепено мењају од црне на левој ивици прозора до беле на десној ивици. Након тога у средини прозора нацртај правоугаоник сиве боје висине 50 пиксела и ширине једнаке три четвртине ширине прозора. Видећеш интересантну оптичку варку.
Ефекат градијента ћеш постићи тако што ћеш ширином прозора распоредити 256 једнаких правоуганика, сваки обојен у различиту нијансу сиве боје.
import pygame as pg
import pygamebg
(sirina, visina) = (512, 250) # otvaramo prozor
prozor = pygamebg.open_window(sirina, visina, "Gradijent")
# bojimo pozadinu gradijentom tako što iscrtavamo 256 jednakih pravougaonika
???
# crtamo jednobojni sivi pravougaonik u sredini
sx = 0.75 * sirina # širina pravougaonika je 3/4 širine prozora
sy = 50 # visina pravougaonika je 50 piksela
???
# prikazujemo prozor i čekamo da ga korisnik isključi
pygamebg.wait_loop()
(gradijent)