ОО2/Лаб 3 2021 — разлика између измена

Извор: SI Wiki
Пређи на навигацију Пређи на претрагу
м (Dodat izgled V2)
м (Ispravke)
Ред 4: Ред 4:


== В2 ==
== В2 ==
 
* <del>'''Генератор''' случајних целих бројева генерише случајне целе бројеве на захтев. Могуће је захтевати један случајан цео број</del> или низ од '''n''' елемената <del>у задатом опсегу доње и горње границе. Задате границе су инклузивне.</del>
'''Генератор''' случајних целих бројева генерише случајне целе бројеве на захтев. Могуће је
* '''Генератор јединствених''' целих бројева је генератор који генерише низ са јединственим бројевима помоћу хеш сета(<code>HashSet</code>).
захтевати један случајан цео број ili niz od n elemenata у задатом опсегу доње и горње границе. Задате границе су инклузивне.
*  <del>'''Поље''' је платно (Canvas) које се ствара са задатом дводимензионом мрежом (видети ниже) којој припада и задатом целобројном вредношћу (број) која представља натпис (лабелу) на пољу и која може да се дохвати. Поље може имати један од следећих статуса: <code>SLOBODNO</code>, <code>IZABRANO</code>,</del> <code>OZNACENO</code>, <code>POGODJENO</code> и <code>PROMASENO</code>, <del>који се може поставити и дохватити. Подразумевано, поље има статус <code>SLOBODNO</code>, а ширина и висина су му 75 пиксела, боја позадине му је наранџаста, а број је исписан црном бојом на средини поља и заузима једну трећину мање димензије поља (потребно је обезбедити промену величине садржаја поља при промени величине прозора). Поље статуса <code>IZABRANO</code> унутар целог поља исцртава елипсу попуњену плавом бојом, а број је исписан белом бојом.</del> Поље статуса <code>OZNACENO</code> унутар целог поља исцртава елипсу попуњену белом бојом, а број је исписан црном бојом. Поље статуса <code>POGODJENO</code> унутар целог поља исцртава елипсу попуњену зеленом бојом, а број је исписан црном бојом. Поље статуса <code>PROMASENO</code> унутар целог поља исцртава елипсу попуњену црвеном бојом, а број је исписан црном бојом. <del>Кликом левог тастера миша на поље мења се његов статус (уколико је статус поља SLOBODNO оно постаје IZABRANO и обрнуто) и поље прослеђује мрежи информацију да се његов статус променио.</del>
 
* <del>'''Мрежа''' је панел који садржи правоугаону матрицу поља и листу (<code>ArrayList</code>) поља која имају статус <code>IZABRANO</code> и која може да се дохвати. Ствара се са задатим целобројним димензијама (подразумевано 4 х 5) и игром (видети ниже) којој припада. Приликом стварања мреже, поља се додају у мрежу редом по врстама, при чему се пољима задају сукцесивне целобројне вредности, а нумерација креће од вредности 0. Поља су размакнута једна од других за 3 пиксела, а боја позадине мреже је црна, тако да се постигне ефекат поља распоређених у мрежи. Могуће је дохватити скуп (<code>HashSet</code>) који чине сви цели бројеви поља мреже са статусом <code>IZABRANO</code>. Променом статуса неког њеног поља, мрежа ажурира листу поља са статусом <code>IZABRANO</code> и прослеђује игри информацију да је поље променило статус.</del> Могуће је закључати поља мреже, чиме та поља не реагују на притиске миша. Могуће је променити пољима чији се бројеви налазе у задатој листи статус на <code>IZABRANO</code>, док се осталима мења на <code>SLOBODNO</code>.
'''Генератор јединствених''' целих бројева је генератор који генерише низ са јединственим бројевима помоћу хеш сета(<code>HashSet</code>).
* Активан '''рулет''' је класа која анимира избор бројева. Ствара се са задатом мрежом. Садржи низ бројева поља која се анимирају који се насумично генеришу и не морају бити јединствени. Величина низа је случајно генерисана вредност између 30% и 70% величине мреже. Може се дохватити последњи анимирани број, чиме се позивајућа нит блокира уколико рулет није завршио (ово служи само за проверу погодтка броја). Анимација треба бити следећа за сваки члан низа: почиње тако што се поље које представља тај члан низа постави на статус <code>OZNACENO</code>, затим се чека одређено време чекања (иницијално 200ms, а сваке следеће итерације се повећава 10%) и затим вратити претходни статус пољу.
 
* Активно '''извлачење''' је класа која извлачи број с рулета. Ствара се са задатом игром и бројем рунди. Потребно је имплементирати тако да при покретању ова класа понови исти циклус колико има рунди. Циклус се састоји од тога да покрене рулет, покупи с рулета последњи анимирани број и обавести игру да је извучен број. Ако је број који је извучен би изабран, потребно је поставити статус тог поља на <code>POGODJENO</code> у супротном статус је <code>PROMASENO</code>. Затим треба чекати 1000ms после чега треба повратити стари статус поља. Док траје извлачење, није могуће бирати поља, односно мрежа треба бити онемогућена. Могуће је дохватити тренутни број рунде, као и укупан број рунди.
'''Поље''' је платно (Canvas) које се ствара са задатом дводимензионом мрежом (видети ниже)
* '''Историја''' извлачења је панел који садржи листу ставки (видети слику) и ствара се са максималним капацитетом. Ставке су објекти класе <code>TextArea</code> без вертикалног и хоризонталног скрол бара. Могуће је додати ставку. У случају да се додаје ставка која би прешла максимални капацитет, потребно је избацити најранију ставку. Ставка треба да садржи број рунде, извучен број, улог и добитак.
којој припада и задатом целобројном вредношћу (број) која представља натпис (лабелу) на
* <del>'''Игра''' је главни прозор апликације (са слике) који садржи једну мрежу подразумеване величине</del> (у центру), <del>која може да се дохвати,</del> један панел за историју извлачења (са леве стране), <del>један панел за управљање</del> (са десне стране) <del>и статусну траку (на дну). Игру је могуће започети само уколико се изабере барем једно поље. Улог има подразумевану вредност 100.</del> Број рунди има подразумевану вредност 4. <del>Избором поља (променом његовог статуса) или изменом вредности улога врши се ажурирање вредности квоте и добитка који се приказују у прозору апликације. Вредност квоте се рачуна као количник укупног броја поља и броја поља са статусом <code>IZABRANO</code>. Вредност добитка се рачуна као производ квоте и улога. Игра се започиње кликом на дугме <code>Igraj</code> након чега се</del> покреће извлачење. <del>Генерисани број исписује се у статусној траци на дну прозора, која се боји зеленом бојом уколико је генерисани број један од бројева на изабраним пољима мреже (број је погођен), односно црвеном бојом у супротном (број је промашен). Уколико је генерисани број погођен, врши се додавање вредности добитка на вредност баланса, док се, уколико је број промашен, врши одузимање вредности улога од вредности баланса.</del> Без обзира на погодак, са баланса се додатно одузима вредност улога. <del> Иницијална вредност баланса је 0. Иницијално, боја статусне траке је тамно-сива.</del> Главни прозор садржи мени са опцијама <code>Par</code> (бира све парне бројеве мреже), <code>Nepar</code> (бира све непарне бројеве мреже), <code>Pola</code> (изабере насумично пола мреже) и опцију <code>Brisi</code> која свим пољима ставља статус <code>SLOBODNO</code>. Треба онемогућити ове опције док траје процес извлачења.
пољу и која може да се дохвати. Поље може имати један од следећих статуса:ПРОМАШЕНО, ПОГОЂЕНО, (И ЈОШ ЈЕДАН ЧИЈЕ ИМЕ СЕ НЕ СЕЋАМ, НЕК БУДЕ СЕЛЕКТОВАНО), SLOBODNO, IZABRANO, који се може поставити и дохватити. Подразумевано, поље има статус SLOBODNO, а ширина и висина су му 75 пиксела, боја позадине му је наранџаста, а број је исписан црном бојом на средини поља и заузима једну трећину мање димензије поља (потребно је обезбедити промену величине садржаја поља при промени величине прозора). Поље статуса IZABRANO унутар целог поља исцртава елипсу попуњену плавом бојом, а број је исписан белом бојом. Поље статуса ПОГОЂЕНО унутар целог поља исцртава елипсу попуњену зеленом бојом, а број је исписан црном бојом. Поље статуса ПРОМАШЕН унутар целог поља исцртава елипсу попуњену црвеном бојом, а број је исписан црном бојом. Поље статуса СЕЛЕКТОВАН унутар целог поља исцртава елипсу попуњену белом бојом, а број је исписан црном бојом. Кликом левог тастера миша на поље мења се његов статус (уколико је статус поља SLOBODNO оно постаје IZABRANO и обрнуто) и поље прослеђује мрежи информацију да се његов статус променио.
 
'''Мрежа''' је панел који садржи правоугаону матрицу поља и листу (ArrayList) поља која имају статус IZABRANO и која може да се дохвати. Ствара се са задатим целобројним димензијама (подразумевано 4 х 5) и игром (видети ниже) којој припада. Приликом стварања мреже, поља се додају у мрежу редом по врстама, при чему се пољима задају сукцесивне целобројне вредности, а нумерација креће од вредности 0. Поља су размакнута једна од других за 3 пиксела, а боја позадине мреже је црна, тако да се постигне ефекат поља распоређених у мрежи. Могуће је дохватити скуп (HashSet) који чине сви цели бројеви поља мреже са статусом IZABRANO. Променом статуса неког њеног поља, мрежа ажурира листу поља са статусом IZABRANO и прослеђује игри информацију да је поље променило статус. Треба имплементирати методу која омогућује односно онемогућује мрежу. Док је мрежа онемогућена, немогуће је изабрати ново поље.
 
'''Рулет''' је класа која анимира избор бројева. Ствара се са задатом мрежом. Садржи низ величине између 30% и 70% величине мреже. Тренутни број се може дохватити(он увек представља последњи број). Треба омогућити да се последњи број не може дохватити док се не заврши анимација. Анимација треба бити следећа: Почиње се тако што се селектује поље са вредности коју представља први члан низа, затим поставити статус тог поља на СЕЛЕКТОВАН, сачекати 200ms и затим вратити претходни статус пољу. Свака следећа итерација кроз низ треба повећати време чекања за 10% иницијалног чекања(200ms). Тренутни број је последњи број у итерацији.
 
'''Извлачење''' је класа која извлачи број с рулета. Ствара се са задатом игром и бројем рунди. Потребно је имплементирати тако да при покретању ова класа понови исти циклус колико има број рунди. Циклус се састоји од тога да покрене рулет, покупи с рулета последњи број и да обавести '''Игру''' да је иѕвучен број. Ако је број који је извучен би изабран, потребно је поставити статус тог поља на ПОГОЂЕН у супротном статус је ПРОМАШЕН. Затим треба чекати 1000ms после чега треба рестурирати стари статус поља. Док траје процес извлачења, није могуће бирати поља, односно мрежа треба бити онемогућена.
 
'''Историја''' је панел који садржи листу ставки(видети слику). Ствара се са максималним капацитетом .Ставке требају бити класа <code>TextArea</code>, не треба имати ни вертикални и хоризонтални скрол бар. Могуће је додати ставку. У случају да се додаје ставка која би прешла максимални капацитет, потребно је ту ставку убацити уместо најраније ставке. Ставка треба садржати број рунде, извучен број, улог и добитак.
 
'''Игра''' је главни прозор апликације (са слике) који садржи једну мрежу подразумеване величине,
која може да се дохвати, један панел за ставке (са леве стране), један панел за управљање (са десне стране) и статусну траку (на дну). Игру је могуће започети само уколико се изабере барем једно поље. Улог има подразумевану вредност 100. Број улога има подразумевану вредност 100 .Избором поља (променом његовог статуса) или изменом вредности улога врши се ажурирање вредности квоте и добитка који се приказују у прозору апликације. Вредност квоте се рачуна као количник укупног броја поља и броја поља са статусом IZABRANO. Вредност добитка се рачуна као производ квоте и улога.
 
Игра се започиње кликом на дугме Igraj након чега се покреће Извлачење. Генерисани број исписује се у статусној траци на дну прозора, која се боји зеленом бојом уколико је генерисани број један од бројева на изабраним пољима мреже (број је погођен), односно црвеном бојом у супротном (број је промашен). Уколико је генерисани број погођен, врши се додавање вредности добитка на вредност баланса, док се, уколико је број промашен, врши одузимање вредности улога од вредности баланса. Иницијална вредност баланса је 0. Иницијално, боја статусне траке је тамно-сива. Главни прозор садржи мени бар Избор са опцијама ''Пар'' (Бира све парне бројеве мреже), ''НеПар'' (Бира све непарне бројеве мреже), ''Пола'' (Изабере насумично пола мреже) и опцију ''Бриши'' која свим пољима ставља статус СЛОБОДНО. Треба онемогућити ове опције док траје процес извлачења.


<gallery>
<gallery>

Верзија на датум 4. јун 2021. у 23:08

В1

В2

  • Генератор случајних целих бројева генерише случајне целе бројеве на захтев. Могуће је захтевати један случајан цео број или низ од n елемената у задатом опсегу доње и горње границе. Задате границе су инклузивне.
  • Генератор јединствених целих бројева је генератор који генерише низ са јединственим бројевима помоћу хеш сета(HashSet).
  • Поље је платно (Canvas) које се ствара са задатом дводимензионом мрежом (видети ниже) којој припада и задатом целобројном вредношћу (број) која представља натпис (лабелу) на пољу и која може да се дохвати. Поље може имати један од следећих статуса: SLOBODNO, IZABRANO, OZNACENO, POGODJENO и PROMASENO, који се може поставити и дохватити. Подразумевано, поље има статус SLOBODNO, а ширина и висина су му 75 пиксела, боја позадине му је наранџаста, а број је исписан црном бојом на средини поља и заузима једну трећину мање димензије поља (потребно је обезбедити промену величине садржаја поља при промени величине прозора). Поље статуса IZABRANO унутар целог поља исцртава елипсу попуњену плавом бојом, а број је исписан белом бојом. Поље статуса OZNACENO унутар целог поља исцртава елипсу попуњену белом бојом, а број је исписан црном бојом. Поље статуса POGODJENO унутар целог поља исцртава елипсу попуњену зеленом бојом, а број је исписан црном бојом. Поље статуса PROMASENO унутар целог поља исцртава елипсу попуњену црвеном бојом, а број је исписан црном бојом. Кликом левог тастера миша на поље мења се његов статус (уколико је статус поља SLOBODNO оно постаје IZABRANO и обрнуто) и поље прослеђује мрежи информацију да се његов статус променио.
  • Мрежа је панел који садржи правоугаону матрицу поља и листу (ArrayList) поља која имају статус IZABRANO и која може да се дохвати. Ствара се са задатим целобројним димензијама (подразумевано 4 х 5) и игром (видети ниже) којој припада. Приликом стварања мреже, поља се додају у мрежу редом по врстама, при чему се пољима задају сукцесивне целобројне вредности, а нумерација креће од вредности 0. Поља су размакнута једна од других за 3 пиксела, а боја позадине мреже је црна, тако да се постигне ефекат поља распоређених у мрежи. Могуће је дохватити скуп (HashSet) који чине сви цели бројеви поља мреже са статусом IZABRANO. Променом статуса неког њеног поља, мрежа ажурира листу поља са статусом IZABRANO и прослеђује игри информацију да је поље променило статус. Могуће је закључати поља мреже, чиме та поља не реагују на притиске миша. Могуће је променити пољима чији се бројеви налазе у задатој листи статус на IZABRANO, док се осталима мења на SLOBODNO.
  • Активан рулет је класа која анимира избор бројева. Ствара се са задатом мрежом. Садржи низ бројева поља која се анимирају који се насумично генеришу и не морају бити јединствени. Величина низа је случајно генерисана вредност између 30% и 70% величине мреже. Може се дохватити последњи анимирани број, чиме се позивајућа нит блокира уколико рулет није завршио (ово служи само за проверу погодтка броја). Анимација треба бити следећа за сваки члан низа: почиње тако што се поље које представља тај члан низа постави на статус OZNACENO, затим се чека одређено време чекања (иницијално 200ms, а сваке следеће итерације се повећава 10%) и затим вратити претходни статус пољу.
  • Активно извлачење је класа која извлачи број с рулета. Ствара се са задатом игром и бројем рунди. Потребно је имплементирати тако да при покретању ова класа понови исти циклус колико има рунди. Циклус се састоји од тога да покрене рулет, покупи с рулета последњи анимирани број и обавести игру да је извучен број. Ако је број који је извучен би изабран, потребно је поставити статус тог поља на POGODJENO у супротном статус је PROMASENO. Затим треба чекати 1000ms после чега треба повратити стари статус поља. Док траје извлачење, није могуће бирати поља, односно мрежа треба бити онемогућена. Могуће је дохватити тренутни број рунде, као и укупан број рунди.
  • Историја извлачења је панел који садржи листу ставки (видети слику) и ствара се са максималним капацитетом. Ставке су објекти класе TextArea без вертикалног и хоризонталног скрол бара. Могуће је додати ставку. У случају да се додаје ставка која би прешла максимални капацитет, потребно је избацити најранију ставку. Ставка треба да садржи број рунде, извучен број, улог и добитак.
  • Игра је главни прозор апликације (са слике) који садржи једну мрежу подразумеване величине (у центру), која може да се дохвати, један панел за историју извлачења (са леве стране), један панел за управљање (са десне стране) и статусну траку (на дну). Игру је могуће започети само уколико се изабере барем једно поље. Улог има подразумевану вредност 100. Број рунди има подразумевану вредност 4. Избором поља (променом његовог статуса) или изменом вредности улога врши се ажурирање вредности квоте и добитка који се приказују у прозору апликације. Вредност квоте се рачуна као количник укупног броја поља и броја поља са статусом IZABRANO. Вредност добитка се рачуна као производ квоте и улога. Игра се започиње кликом на дугме Igraj након чега се покреће извлачење. Генерисани број исписује се у статусној траци на дну прозора, која се боји зеленом бојом уколико је генерисани број један од бројева на изабраним пољима мреже (број је погођен), односно црвеном бојом у супротном (број је промашен). Уколико је генерисани број погођен, врши се додавање вредности добитка на вредност баланса, док се, уколико је број промашен, врши одузимање вредности улога од вредности баланса. Без обзира на погодак, са баланса се додатно одузима вредност улога. Иницијална вредност баланса је 0. Иницијално, боја статусне траке је тамно-сива. Главни прозор садржи мени са опцијама Par (бира све парне бројеве мреже), Nepar (бира све непарне бројеве мреже), Pola (изабере насумично пола мреже) и опцију Brisi која свим пољима ставља статус SLOBODNO. Треба онемогућити ове опције док траје процес извлачења.

В3