ОО2/Лаб 3 2023
< ОО2
Пређи на навигацију
Пређи на претрагу
Трећа лабораторијска вежба 2023. године одржана је 2. јуна године заједно за СИ и РТИ.
В1
Задатак се појавио на јунској трећој лабораторијској вежби у прво, РТИ термину. Поставка основног задатка је доступна на страници предмета.
Саставити на језику Java следећи пакет класа:
Парцела је натпис (Label
), који се ствара са задатом једнословном ознаком и бојом позадине (Color
). Ознака се исписује белом бојом (WHITE
) и фонтомSerif
, подебљано, величине 14. Парцели може да се промени боја позадине. Парцела може да се изабере кликом миша, што она пријављује родитељском контејнеру.Травната површ је парцела зелене боје (GREEN
) и ознаке ".Водена површ је парцела светло плаве боје (CYAN
) и ознаке ~.Батерија је натпис (Текстуални опис батерије је облика енергија / капацитет – проценат_напуњености. Текстуални опис се исписује фонтомLabel
), која има целобројну количину тренутне енергије и задати максимални капацитет. При стварању батерија је потпуно пуна. Могуће је додати задату целобројну количину енергије батерији, при чему се вишак енергије одбацује након што се батерија потпуно напуни. Могуће је потпуно испразнити батерију. Може се проверити да ли је батерија пуна.Monospaced
, подебљано, величине 14. Боја позадине батерије је зелена када је батерија пуна, а жута иначе.Произвођач је парцела која активно производи енергију у циклусима. Ствара се са додатно задатим целобројним основним временом и батеријом. Укупно време производње се рачуна као збир основног времена и случајно генерисаног целог броја у опсегу [0, 300]. Произвођач периодично сачека укупно време, затим произведе извесан број јединица енергије којима пуни батерију (уз могући неуспех производње) и додатно сачека 300 милисекунди. Уколико је произвођач успешно произвео енергију, његов натпис се исписује црвеном бојом (RED) у току наведеног интервала од 300 милисекунди, након текуће производње, а пре новог циклуса производње. Могуће је зауставити произвођача.- Соларни панел је произвођач црне боје (
BLACK
) и ознаке #. Основно време производње му је 2500 милисекунди. Соларни панел увек успешно произведе 2 јединице енергије у сваком циклусу. Хидроелектрана је произвођач плаве боје (BLUE
) и ознакеH
. Може да јој се постави број водених површина које је окружују (при стварању 0). Хидроелектрана генерише у сваком циклусу по једну јединицу енергије за сваку водену површ која је окружује. Производња енергије је успешна уколико хидроелектрану окружује барем једна водена површ. Основно време производње је 1500 милисекунди.- Ветрењача је произвођач светло сиве боје (
LIGHT_GRAY
), основног времена 500 милисекунди и ознаке x. Сваки пут када дуне ветар ефикасност ветрењаче се постави на 4. Ветрењача у сваком циклусу успешно производи енергију када је ефикасност већа од нуле, након чега се ефикасност ветрењаче смањи за један. Ветрењача производи онолико јединица енергије колика је тренутна ефикасност ветрењаче. Плац је решетка парцела. Ствара се са задатим бројем редова и колона решетке. Приликом стварања свако поље решетке се насумично иницијализује травнатом (вероватноћа 70%) или воденом површи (вероватноћа 30%). Може да се изабере једна парцела. Избором нове парцеле,претходно изабраној парцели се поништава избор. Изабраној парцели се величина фонта увећава на 20. Могуће је додати произвођача на изабрану парцелу, након чега се хидроелектранама ажурира број водених површина које их окружују. Уколико ни једна парцела није изабрана, додавање произвођача није успешно.Грешка је уколико се покуша постављање хидроелектране ван водене парцеле. Грешка је уколико се покуша постављање новог потрошача на парцелу на којој се већ налази потрошач. Грешка се сигнализира краткотрајном променом боје позадине парцеле на црвену (RED
). Могуће је сигнализирати свакој ветрењачи на плацу дување ветра.Могуће је зауставити рад свих произвођача.- Активни ветар се ствара са задатим плацом. На сваких 5000 милисекунди вероватноћа да се појави ветар на плацу је 50%. Могуће је зауставити дување ветра.
- Активни одабир се ствара са задатом батеријом, задатим избором из падајуће листе произвођача (
Choice
) и задатим дугметом за додавање изабраног произвођача (Button
). Одабир чека да се промени статус батерије и затим омогући промену и избор произвођача уколико је батерија пуна, а онемогући у супротном. Могуће је зауставити рад одабира. Енергетски систем је главни прозор апликације ширине 500 и висине 500 пиксела који садржи плац,ветари батерију. Ствара се са задатим бројем редова и колона плаца и капацитетом батерије. У току стварања енергетског система направе се плац,ветари батерија. Није могуће променити величину прозора. Прозор садржикомпоненту за избор произвођача (Choice
) идугме (Прозор је могуће затворити помоћу дугмета које се уобичајено користи за ту сврху, одабиром одговарајуће опције из менија или комбинацијом тастера CTRL+Q.Button
) за додавање новог потрошача.
Класа/Група | Опис функционалности | Поени |
---|---|---|
Батерија | Батерија и одабир у северном делу | 5 |
Батерија се исписује на одговарајући начин | 5 | |
Боја батерије се мења у зависности од напуњености | 5 | |
Одабир произвођача блокиран кад батерија није пуна, а довзољен кад јесте | 10 | |
Соларни панел | Исцратва се | 5 |
Производи енергију у складу са правилима у тексту задатку | 5 | |
Ветрњача | Исцратава се | 5 |
Производи енергију у складу са правилима у тексту задатку | 5 | |
Ветар се активира према правилима у поставци задатка | 10 | |
Грешка | Грешка додавање произвођача на неадекватну парцелу | 15 |
Главни прозор | Постоји ставка менија | 5 |
Прозор се затвара из менија | 5 | |
Прозор се затвара преко тастатуре | 5 | |
Опште | Програм се успешно завршава | 10 |
Стил писаања кода | 5 |
В2
Задатак се појавио на јунској трећој лабораторијској вежби у другом, СИ термину. Поставка основног задатка је доступна на страници предмета.
Саставити на језику Java следећи пакет класа:
Вектор се ствара са задатим реалним координатама у дводимензионом простору (нападна тачка је у координатном почетку), које могу да се поставе и дохвате. Може да му се одреди јединични вектор (орт), тако што му се свака координата подели са вредношћу магнитуде вектора. Може се створити вектор на псеудослучајан начин са координатама у опсегу (-1, 1), при чему није дозвољена вредност (0, 0).Фигура се ствара са задатим вектором положаја, вектором помераја и полупречником описане кружнице (чија је подразумевана вредност 20), који могу да се дохвате. Може да се одреди да ли се задати вектор положаја налази у оквиру описане кружнице текуће фигуре, као и да ли се описана кружница текуће фигуре преклапа са описаном кружницом задате фигуре. Могуће је дохватити боју којом се фигура исцртава, као и исцртати фигуру.Могуће је дохватити текстуалну врсту фигуре, створити нову фигуру исте врсте као и текућа, али са задатим новим параметрима: вектором положаја, вектором помераја и полупречником описане кружнице, као и одредити да ли је фигура јача од задате фигуре. Фигуре исте врсте су једнаке јачине.Диск је фигура која се исцртава плавом бојом у виду осмоугла са центром у вектору положаја.Врста фигуре је Kamen. Камен је јачи од Маказа, а слабији од Папира.- Папир је фигура која се исцртава црвеном бојом у виду квадрата са страницама паралелним осама координатног система, ротираног за 45 степени око центра на координатама вектора положаја. Врста папира је Papir. Папир је јачи од Камена, а слабији од Маказа.
- Маказе су фигура која се исцртава зеленом бојом у виду једнакостраничног троугла са једном вертикалном страницом и центром на координатама вектора положаја. Врста маказа је Makaze. Маказе су јаче од Папира, а слабије од Камена.
- Активна штоперица се ствара са задатим графичким натписом (
Label
). Штоперица се активира приликом стварања, али не започиње одмах свој посао. Посао штоперице се састоји од ажурирања задатог натписа информацијом о протеклом времену на сваких 100мс. Посао штоперице може да се покрене, привремено паузира, настави и трајно заврши. Штоперица може да се ресетује, при чему се најпре изврши њено паузирање, а затим се анулира протекло време. Активна сцена је платно (Canvas) сиве боје која се ствара са задатим главним прозором (видети ниже). Сцена се активира приликом стварања, али не започиње одмах свој посао. Посао сцене се састоји од померања њених фигура за њихов јединични вектор помераја помножен одговарајућом вредношћу помераја у пикселима (подразумевано износи 3) и њиховог исцртавања на сваких 100мс,као и евидентирања броја фигура сваке врсте на прослеђеним графичким натписима.Могуће је покренути сцену и дохватити информацију да ли сцена тренутно ради, као и додати фигуру на сцену. Уколико се фигура која се додаје на сцену преклапа са неком од постојећих фигура на сцени или фигура не стаје цела на сцену, операција додавања је без ефекта. Уколико се фигура судари са неком од ивица сцене или са неком другом фигуром, она се од ње одбија под одбојним углом идентичним упадном углу (еластични судар).У случају да се две фигуре сударе, слабија фигура се избацује са сцене и њу замењује нова фигура исте врсте као и јача, која преузима векторе положаја, помераја и полупречник избачене фигуре. У случају да се на сцени налазе само фигуре исте врсте, сцена паузира свој рад, на средини исписује текст KRAJ и захтева од главног прозора да омогући компоненту за унос броја фигура, а онемогући компоненте за избор фигуре и величине помераја фигура (које ће бити поново омогућене било којом опцијом из менија главног прозора). Могуће је поставити штоперицу, избацити све фигуре чије кружнице обухватају прослеђени вектор положаја, обрисати све фигуре са сцене (при чему се ресетују и бројачи фигура и штоперица, а сцена захтева од главног прозора ажурирање одговарајућих графичких натписа), дохватити број фигура на сцени, поставити и дохватити вредност помераја фигура, као и проверити да ли сцена садржи само фигуре једног истог типа.Посао сцене може да се привремено паузира, настави и трајно заврши,при чему се паузира, наставља и трајно завршава и рад штоперице.Приликом паузирања посла сцене, на средини сцене исписује се текст PAUZA.- Генератор се ствара са задатим димензијама сцене. Може да генерише задати максималан број фигура подразумеваног полупречника које се не преклапају тако што на псеудослучајан начин одређује њихове векторе положаја и помераја. Генератор генерише фигуре на кружни начин (најпре камен, па папир, па маказе) и највише 100 пута покушава да распореди једну фигуру на празно место на сцени, након чега одустаје од даљег генерисања фигура и враћа до тада створене фигуре као листу фигура.
Графичка симулација је главни прозор апликације (Прозор садржи траку менија у којој се налазе ставке менија за генерисање фигура користећи генератор (што је могуће и опцијом CTRL + G), као и брисање свих фигура са сцене (што је могуће и опцијом CTRL + B). Број генерисаних фигура се задаје у текстуалном пољу у дну екрана. У горњем делу прозора налази се информација о износу помераја фигура у пикселима, чија вредност је у опсегу [1-5] и може да се промени за вредност 1 притиском на одговарајући тастер означен написомFrame
) који садржи сцену.<<
, односно>>
, али и ресетује на подразумевану вредност притиском на тастер означен натписом х. У десном делу прозора могуће је изабрати фигуру која се додаје, при чему текст изабране фигуре „светли“ белом бојом. Овај избор је могуће извршити и коришћењем тастера (стрелица) горе и доле на тастатури. У доњем делу прозора налазе се натписи са информацијом о тренутном броју фигура сваке врсте, текстуално поље са бројем фигура, као и натпис који користи штоперица.Притиском левог тастера миша на сцену створи се изабрана фигура подразумеваног полупречника чији вектор положаја одговара координатама миша, док се вектор помераја генерише на псеудослучајан начин.Десним притиском тастера миша на сцену врши се уклањање свих фигура чије кружнице обухватају координате миша.Могуће је паузирати и наставити посао сцене притиском на тастер Space, док се притиском на тастер Esc затвара главни прозор и све нити трајно завршавају свој рад. Док сцена обавља свој посао није могућа интеракција са сценом,као ни са компонентама за избор фигуре и унос броја фигура.Интеракција са сценомкао и са претходно наведеним компонентамаје могућа кад је на сцени исписан текст PAUZA.
Класа/Група | Опис функционалности | Поени |
---|---|---|
Фигуре | Постоји радио дугмад за избор фигура; тренутни избор светли | 10 |
Додавање фигуре у зависности од избора, левим кликом миша | 5 | |
Брисање фигуре десним кликом миша | 5 | |
Исцртавање маказа | 5 | |
Исцртавање папира | 5 | |
Штоперица | Постоји лабела са Штоперицом | 5 |
Штоперица тече | 5 | |
Штоперица се зауставља/ради на Space | 5 | |
Судари | Замена слабија Фигуре јачом при судару | 5 |
Крај симулације кад преостану само Фигуре исте врсте | 5 | |
Главни прозор | Постоји лабела за приказ броја Фигура и текстуално поље за укупан број Фигура | 5 |
Ажурирање лабела за приказ броја фигура и текстуалног поља за укупан број Фигура | 5 | |
Постојање менија са опцијама | 5 | |
Генерисање задатог броја фигура кроз мени и преко пречице | 10 | |
Брисање свих фигура са сцене кроз мени и преко пречице | 5 | |
Ресетовање штоперице кроз мени и на пречицу | 5 | |
Панел на северу са опцијама за померање | 5 | |
Повећање, смањење и ресетовање вредности помераја | 5 |
Поправни Лаб
Задатак се појавио на јунској поправној лабораторијској вежби у првом, једином, термину. Поставка основног задатка је доступна [1]
Саставити на језику Java следећи пакет класа:
Поље је платно (Canvas
) које се ствара са задатом бојом позадине и њивом (видети ниже) на којој се налази. Могуће је поље обавестити да ли је тренутно изабрано (селектовано) поље на њиви. Уколико је поље изабрано, приликом цртања се додатно црта црвени правоугаоник који је мало мањи од самог поља (видети слику). На једном пољу се у једном тренутку може налазити највише један актер (видети ниже). Могуће је поставити актера на поље. Грешка је уколико се на пољу већ налази други актер. Могуће је проверити да ли се било који актер налази на пољу. Могуће је дохватити актера који се налази на пољу. Грешка је уколико на пољу тренутно нема актера. Могуће је уклонити актера са поља. Приликом цртања поља црта се и актер уколико је постављен.Земљано поље је поље браон боје.- Водено поље је поље које се ствара са почетном количином воде 10. Могуће је узети воду са поља и успешност ове операције је повратна вредност функције, док је она успешна само ако је преостало воде да се узме.
- Активно кукурузно поље је поље које се иницијално ствара зелено док јој се радња састоји од постепеног узимања воде од неког околног воденог поља и мировања 600 милисекунди. Том приликом се боја постепено мења ка жутој, а потребно је 5 промена (на лабу је објашњено да се ово ради додавањем 51 на блу параметар Колор-а) да би "кукуруз сазрео". Тада поље има 4 зрна, а број зрна се исписује на горњем левом делу поља (црном бојом).
Активни актер периодично обавља одређену радњу. Ствара се са задатом бојом, минималним и максималним временом мировања између обављања радњи. Актера је могуће поставити на задато поље. Актера је могуће цртати на задатом пољу. Рад актера је могуће трајно зауставити..- Јаје је актер који нестаје за 5 до 7 секунди од стварања и црта се као овал са црним ободом оне боје што му је задата, и такође има своју вредност.
- Кокошије јаје је јаје крем боје (дат је био РГБ ове боје) врдности 500.
- Пачје јаје је јаје беле боје вредности 1000.
Птица је актер. Радња птице се састоји у померању на насумично суседно поље на њиви на коме нема постављеног актера. Уколико нема таквог поља птица остаје на пољу на коме се налази.Уколико се налази на кукурузном пољу, појешће зрно са њега. Када поједе онолико зрна колико јој је потребно да снесе јаје, птица сноси јаје на том пољу и напушта гаПтица се црта у виду великог попуњеног круга њеном бојом и у њему уписаног малог црвеног круга.Птица можда не може да оде на неко поље и тада га не разматра у процесу горе.Кокошка је птица беле боје.Када поједе 5 зрна, сноси јаје. Не уме да плива.- Патка је птица сиве боје и сноси јаје кад поједе 6 зрна. Уме да плива.
Њива је решетка поља. Ствара се са задатим бројем редова и колона решетке. Сва поља на њиви су земљана, а изабрано је поље које се налази у горњем левом углу. На изабрано поље је могуће поставити задатог актера. Могуће је трајно зауставити рад свих актераМогуће је узети воду са неког од суседног поља задатог поља при чему се позивајућа нит блокира ако нема поља одакле може узети воду. Могуће је заменити изабрано поље са задатим.и пољана њиви. Могуће је поставити да новоизабрано поље њиве буде неко од суседних поља тренутно изабраног поља. Могуће је дохватити листу суседних поља задатом пољу. Могуће је дохватити тренутно изабрано поље.Симулација фарме је главни прозор апликације (Такође постоје дугмад за куповину воденог поља (100 динара), кукурузног (200 динара), патке (600) динара која се сва о(не)могућавају зависно од новца. Прати се и зарада и тренутни новац (лабела за зараду креће од 0). Притиском на тастер SPACE продаје се јаје које је на селектованом пољу (ако јесте неко јаје) и додаје се новац на тренутни новац као и на зараду. Куповином поља мења се тренутно поље на оно купљено.Frame
) који садржи њиву. У централном делу прозора се приказује њива док се са десне стране налази команда за куповину, као и информација о тренутној количини новца (видети слику). Количина новца коју корисник има на располагању при покретању програма једнака је 2000. Куповином кокошке она се поставља на изабрано поље њиве и троши се износ новца наведен у заградама (цена кокошке). Кликом на стрелице на тастатури мења се изабрано поље на њиви преласком на њему суседно у задатом смеру. Дугме за куповину кокошке се онемогућава када корисник нема довољно новца за куповину.
Опис функционалности | Поени |
---|---|
Патка, промењена птица | 20 |
Кукуруз и вода - рад и исцртавање | 20 |
Дугмад за додавање, рад симулације и лабеле | 20 |
Јаја, продаја, сношење, исцртавање | 20 |
Код (стил) | 10 |
Напомене
Све информације писане су по сећању студената.