Prijavi problem


Obeleži sve katergorije koje odgovaraju problemu

Jos 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.

Programiranje grafike pomoću Pygame, priručnik za sedmi razred

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

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

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

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

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

Анализирајмо наредни програм који црта пет квадрата обојених у различите боје дефинисане помоћу RGB вредности: црвене, зелене, плаве, црне и беле.

Квадрати у различитим бојама

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

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

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

Нијансе црвене боје су одређене тиме да садрже само црвену компоненту боје, док су зелена и плава на нули. Боје иду од чисте црвене ([255, 0, 0]), па до црне ([0, 0, 0]). Претпоставићемо да је разлика количине светлости између сваке две суседне нијансе иста. Ако је та разлика r, тада је црвена компонента у нашим бојама редом \(0\), \(r\), \(2r\), \(3r\), \(4r\) и \(5r\). Пошто најсветлија боја треба да буде најсветлија важи да је \(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 пиксела.

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

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

Поново компоненте светлости треба да се варирају у корацима од 51 (0, 51, 102, 153, 204, 255), једино што овај пут за сваку нијансу сиве све три компоненте светлости треба да буду истог интензитета.

Глава робота

Нацртај наранџасту главу робота квадратног облика, која има црне очи и уста квадратног облика.

Глава робота

Претходни програм приказује тражену главу робота. Прозор је димензија 300 пута 300 пиксела, а глава робота 200 пута 200 пиксела. То значи да на маргине одлази по 50 пиксела и стога се горње лево теме главе робота налази у тачки са координатама \((50, 50)\). Ширина два ока и ширина размака око очију (размаци од ивице главе до очију и размак између очију) су једнаки. Дакле, укупно 5 тих димензија испуњава ширину главе робота, одакле следи да је та димензија петина ширине главе, тј. 40 пиксела. Претпоставићемо да је то уједно и величина размака од горње ивице главе робота до очију, тако да ће се горње лево теме левог ока налазити у тачки са координатама \((90, 90)\) (величина размака је додата на обе координате горњег левог темена главе), а горње лево теме десног ока налазити у тачки са координатама \((170, 90)\) (на координату x горњег левог темена левог ока додата је ширина ока и ширина размака између очију). Претпоставићемо да су уста исте димензије као и око, да је размак од дна уста до дна главе исти као размак између врха главе и врха очију и да су уста хоризонтално центрирана. Пошто је вертикална средина екрана на линији са координатом x која је једнака 150, координате горњег левог темена уста су \((130, 170)\) (прва је добијена тако што се од координате x средине прозора одузела половина ширине уста, а друга је добијена тако што је од координате y дна уста одузета величина размака и висина уста).

Програм можемо прилагодити тако да се све координате аутоматски рачунају на основу правила које смо применили у претходној рачуници. Тиме ћемо постићи да цео цртеж робота може лако да мења величину и свој положај на екрану (величина ће зависити само од димензије главе, а положај само од координата центра главе, који ћемо поставити у центар прозора).

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

Робот

Напиши програм који исцртава целу роботицу Мицу (као што је приказано на слици). Tело (труп) јој је квадратног облика, центар му се налази у центру екрана, а димензија му је задата променљивом telo. Остале димензије су већ задате у програму који треба да допуниш, а ти треба да одредиш неке недостајуће координате.

../_images/robot_koordinate.png

Маргине

A4 папир је димензија 210x297 милиметара. На његовој средини се штампа текст, при чему се са све четири стране оставља маргина која је 10 процената димензије папира (лева и десна маргина су 10 процената ширине, а горња и доња маргина су 10 процената висине папира). Напиши програм који плавом бојом обележава садржај папира. Програм треба да ради исправно и када се димензија папира (тј. прозора) промени.

Ако проценат који заузима свака маргина обележимо са \(p\) (у нашем случају \(p = 10% = \frac{10}{100} = 0,1\)), ширина леве и десне маргине се могу израчунати као \(p\) пута ширина папира, а висина горње и доње маргине као \(p\) пута висина папира. Координата x горњег левог темена правоугаоника који представља садржај једнака је ширини леве маргине, а координата y висини горње маргине. Ширина садржаја једнака је разлици ширине странице и збира ширина леве и десне маргине тј. може се израчунати као \(1 - 2p\) пута ширина папира. Слично се израчунава и висина папира.

У складу са претходним објашњењем допуни наредни пример.