ОО2/Лаб 3 2023

Извор: SI Wiki
Пређи на навигацију Пређи на претрагу

Трећа лабораторијска вежба 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) и дугме (Button) за додавање новог потрошача. Прозор је могуће затворити помоћу дугмета које се уобичајено користи за ту сврху, одабиром одговарајуће опције из менија или комбинацијом тастера CTRL+Q.
Табела за оцењивање
Класа/Група Опис функционалности Поени
Батерија Батерија и одабир у северном делу 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 пута покушава да распореди једну фигуру на празно место на сцени, након чега одустаје од даљег генерисања фигура и враћа до тада створене фигуре као листу фигура.
  • Графичка симулација је главни прозор апликације (Frame) који садржи сцену. Прозор садржи траку менија у којој се налазе ставке менија за генерисање фигура користећи генератор (што је могуће и опцијом CTRL + G), као и брисање свих фигура са сцене (што је могуће и опцијом CTRL + B). Број генерисаних фигура се задаје у текстуалном пољу у дну екрана. У горњем делу прозора налази се информација о износу помераја фигура у пикселима, чија вредност је у опсегу [1-5] и може да се промени за вредност 1 притиском на одговарајући тастер означен написом <<, односно >>, али и ресетује на подразумевану вредност притиском на тастер означен натписом х. У десном делу прозора могуће је изабрати фигуру која се додаје, при чему текст изабране фигуре „светли“ белом бојом. Овај избор је могуће извршити и коришћењем тастера (стрелица) горе и доле на тастатури. У доњем делу прозора налазе се натписи са информацијом о тренутном броју фигура сваке врсте, текстуално поље са бројем фигура, као и натпис који користи штоперица. Притиском левог тастера миша на сцену створи се изабрана фигура подразумеваног полупречника чији вектор положаја одговара координатама миша, док се вектор помераја генерише на псеудослучајан начин. Десним притиском тастера миша на сцену врши се уклањање свих фигура чије кружнице обухватају координате миша. Могуће је паузирати и наставити посао сцене притиском на тастер Space, док се притиском на тастер Esc затвара главни прозор и све нити трајно завршавају свој рад. Док сцена обавља свој посао није могућа интеракција са сценом, као ни са компонентама за избор фигуре и унос броја фигура. Интеракција са сценом као и са претходно наведеним компонентама је могућа кад је на сцени исписан текст PAUZA.
Табела за оцењивање
Класа/Група Опис функционалности Поени
Фигуре Постоји радио дугмад за избор фигура; тренутни избор светли 10
Додавање фигуре у зависности од избора, левим кликом миша 5
Брисање фигуре десним кликом миша 5
Исцртавање маказа 5
Исцртавање папира 5
Штоперица Постоји лабела са Штоперицом 5
Штоперица тече 5
Штоперица се зауставља/ради на Space 5
Судари Замена слабија Фигуре јачом при судару 5
Крај симулације кад преостану само Фигуре исте врсте 5
Главни прозор Постоји лабела за приказ броја Фигура и текстуално поље за укупан број Фигура 5
Ажурирање лабела за приказ броја фигура и текстуалног поља за укупан број Фигура 5
Постојање менија са опцијама 5
Генерисање задатог броја фигура кроз мени и преко пречице 10
Брисање свих фигура са сцене кроз мени и преко пречице 5
Ресетовање штоперице кроз мени и на пречицу 5
Панел на северу са опцијама за померање 5
Повећање, смањење и ресетовање вредности помераја 5

Напомене

Све информације писане су по сећању студената.