OO2/Lab 3 2023

Izvor: SI Wiki
Pređi na navigaciju Pređi na pretragu

Treća laboratorijska vežba 2023. godine održana je 2. juna godine zajedno za SI i RTI.

V1

Zadatak se pojavio na junskoj trećoj laboratorijskoj vežbi u prvo, RTI terminu. Postavka osnovnog zadatka je dostupna na stranici predmeta.

Sastaviti na jeziku Java sledeći paket klasa:

  • Parcela je natpis (Label), koji se stvara sa zadatom jednoslovnom oznakom i bojom pozadine (Color). Oznaka se ispisuje belom bojom (WHITE) i fontom Serif, podebljano, veličine 14. Parceli može da se promeni boja pozadine. Parcela može da se izabere klikom miša, što ona prijavljuje roditeljskom kontejneru.
  • Travnata površ je parcela zelene boje (GREEN) i oznake ".
  • Vodena površ je parcela svetlo plave boje (CYAN) i oznake ~.
  • Baterija je natpis (Label), koja ima celobrojnu količinu trenutne energije i zadati maksimalni kapacitet. Pri stvaranju baterija je potpuno puna. Moguće je dodati zadatu celobrojnu količinu energije bateriji, pri čemu se višak energije odbacuje nakon što se baterija potpuno napuni. Moguće je potpuno isprazniti bateriju. Može se proveriti da li je baterija puna. Tekstualni opis baterije je oblika energija / kapacitet – procenat_napunjenosti. Tekstualni opis se ispisuje fontom Monospaced, podebljano, veličine 14. Boja pozadine baterije je zelena kada je baterija puna, a žuta inače.
  • Proizvođač je parcela koja aktivno proizvodi energiju u ciklusima. Stvara se sa dodatno zadatim celobrojnim osnovnim vremenom i baterijom. Ukupno vreme proizvodnje se računa kao zbir osnovnog vremena i slučajno generisanog celog broja u opsegu [0, 300]. Proizvođač periodično sačeka ukupno vreme, zatim proizvede izvesan broj jedinica energije kojima puni bateriju (uz mogući neuspeh proizvodnje) i dodatno sačeka 300 milisekundi. Ukoliko je proizvođač uspešno proizveo energiju, njegov natpis se ispisuje crvenom bojom (RED) u toku navedenog intervala od 300 milisekundi, nakon tekuće proizvodnje, a pre novog ciklusa proizvodnje. Moguće je zaustaviti proizvođača.
  • Solarni panel je proizvođač crne boje (BLACK) i oznake #. Osnovno vreme proizvodnje mu je 2500 milisekundi. Solarni panel uvek uspešno proizvede 2 jedinice energije u svakom ciklusu.
  • Hidroelektrana je proizvođač plave boje (BLUE) i oznake H. Može da joj se postavi broj vodenih površina koje je okružuju (pri stvaranju 0). Hidroelektrana generiše u svakom ciklusu po jednu jedinicu energije za svaku vodenu površ koja je okružuje. Proizvodnja energije je uspešna ukoliko hidroelektranu okružuje barem jedna vodena površ. Osnovno vreme proizvodnje je 1500 milisekundi.
  • Vetrenjača je proizvođač svetlo sive boje (LIGHT_GRAY), osnovnog vremena 500 milisekundi i oznake x. Svaki put kada dune vetar efikasnost vetrenjače se postavi na 4. Vetrenjača u svakom ciklusu uspešno proizvodi energiju kada je efikasnost veća od nule, nakon čega se efikasnost vetrenjače smanji za jedan. Vetrenjača proizvodi onoliko jedinica energije kolika je trenutna efikasnost vetrenjače.
  • Plac je rešetka parcela. Stvara se sa zadatim brojem redova i kolona rešetke. Prilikom stvaranja svako polje rešetke se nasumično inicijalizuje travnatom (verovatnoća 70%) ili vodenom površi (verovatnoća 30%). Može da se izabere jedna parcela. Izborom nove parcele,prethodno izabranoj parceli se poništava izbor. Izabranoj parceli se veličina fonta uvećava na 20. Moguće je dodati proizvođača na izabranu parcelu, nakon čega se hidroelektranama ažurira broj vodenih površina koje ih okružuju. Ukoliko ni jedna parcela nije izabrana, dodavanje proizvođača nije uspešno. Greška je ukoliko se pokuša postavljanje hidroelektrane van vodene parcele. Greška je ukoliko se pokuša postavljanje novog potrošača na parcelu na kojoj se već nalazi potrošač. Greška se signalizira kratkotrajnom promenom boje pozadine parcele na crvenu (RED). Moguće je signalizirati svakoj vetrenjači na placu duvanje vetra. Moguće je zaustaviti rad svih proizvođača.
  • Aktivni vetar se stvara sa zadatim placom. Na svakih 5000 milisekundi verovatnoća da se pojavi vetar na placu je 50%. Moguće je zaustaviti duvanje vetra.
  • Aktivni odabir se stvara sa zadatom baterijom, zadatim izborom iz padajuće liste proizvođača (Choice) i zadatim dugmetom za dodavanje izabranog proizvođača (Button). Odabir čeka da se promeni status baterije i zatim omogući promenu i izbor proizvođača ukoliko je baterija puna, a onemogući u suprotnom. Moguće je zaustaviti rad odabira.
  • Energetski sistem je glavni prozor aplikacije širine 500 i visine 500 piksela koji sadrži plac, vetar i bateriju. Stvara se sa zadatim brojem redova i kolona placa i kapacitetom baterije. U toku stvaranja energetskog sistema naprave se plac, vetar i baterija. Nije moguće promeniti veličinu prozora. Prozor sadrži komponentu za izbor proizvođača (Choice) i dugme (Button) za dodavanje novog potrošača. Prozor je moguće zatvoriti pomoću dugmeta koje se uobičajeno koristi za tu svrhu, odabirom odgovarajuće opcije iz menija ili kombinacijom tastera CTRL+Q.
Tabela za ocenjivanje
Klasa/Grupa Opis funkcionalnosti Poeni
Baterija Baterija i odabir u severnom delu 5
Baterija se ispisuje na odgovarajući način 5
Boja baterije se menja u zavisnosti od napunjenosti 5
Odabir proizvođača blokiran kad baterija nije puna, a dovzoljen kad jeste 10
Solarni panel Iscratva se 5
Proizvodi energiju u skladu sa pravilima u tekstu zadatku 5
Vetrnjača Iscratava se 5
Proizvodi energiju u skladu sa pravilima u tekstu zadatku 5
Vetar se aktivira prema pravilima u postavci zadatka 10
Greška Greška dodavanje proizvođača na neadekvatnu parcelu 15
Glavni prozor Postoji stavka menija 5
Prozor se zatvara iz menija 5
Prozor se zatvara preko tastature 5
Opšte Program se uspešno završava 10
Stil pisaanja koda 5

V2

Zadatak se pojavio na junskoj trećoj laboratorijskoj vežbi u drugom, SI terminu. Postavka osnovnog zadatka je dostupna na stranici predmeta.

Sastaviti na jeziku Java sledeći paket klasa:

  • Vektor se stvara sa zadatim realnim koordinatama u dvodimenzionom prostoru (napadna tačka je u koordinatnom početku), koje mogu da se postave i dohvate. Može da mu se odredi jedinični vektor (ort), tako što mu se svaka koordinata podeli sa vrednošću magnitude vektora. Može se stvoriti vektor na pseudoslučajan način sa koordinatama u opsegu (-1, 1), pri čemu nije dozvoljena vrednost (0, 0).
  • Figura se stvara sa zadatim vektorom položaja, vektorom pomeraja i poluprečnikom opisane kružnice (čija je podrazumevana vrednost 20), koji mogu da se dohvate. Može da se odredi da li se zadati vektor položaja nalazi u okviru opisane kružnice tekuće figure, kao i da li se opisana kružnica tekuće figure preklapa sa opisanom kružnicom zadate figure. Moguće je dohvatiti boju kojom se figura iscrtava, kao i iscrtati figuru. Moguće je dohvatiti tekstualnu vrstu figure, stvoriti novu figuru iste vrste kao i tekuća, ali sa zadatim novim parametrima: vektorom položaja, vektorom pomeraja i poluprečnikom opisane kružnice, kao i odrediti da li je figura jača od zadate figure. Figure iste vrste su jednake jačine.
  • Disk je figura koja se iscrtava plavom bojom u vidu osmougla sa centrom u vektoru položaja. Vrsta figure je Kamen. Kamen je jači od Makaza, a slabiji od Papira.
  • Papir je figura koja se iscrtava crvenom bojom u vidu kvadrata sa stranicama paralelnim osama koordinatnog sistema, rotiranog za 45 stepeni oko centra na koordinatama vektora položaja. Vrsta papira je Papir. Papir je jači od Kamena, a slabiji od Makaza.
  • Makaze su figura koja se iscrtava zelenom bojom u vidu jednakostraničnog trougla sa jednom vertikalnom stranicom i centrom na koordinatama vektora položaja. Vrsta makaza je Makaze. Makaze su jače od Papira, a slabije od Kamena.
  • Aktivna štoperica se stvara sa zadatim grafičkim natpisom (Label). Štoperica se aktivira prilikom stvaranja, ali ne započinje odmah svoj posao. Posao štoperice se sastoji od ažuriranja zadatog natpisa informacijom o proteklom vremenu na svakih 100ms. Posao štoperice može da se pokrene, privremeno pauzira, nastavi i trajno završi. Štoperica može da se resetuje, pri čemu se najpre izvrši njeno pauziranje, a zatim se anulira proteklo vreme.
  • Aktivna scena je platno (Canvas) sive boje koja se stvara sa zadatim glavnim prozorom (videti niže). Scena se aktivira prilikom stvaranja, ali ne započinje odmah svoj posao. Posao scene se sastoji od pomeranja njenih figura za njihov jedinični vektor pomeraja pomnožen odgovarajućom vrednošću pomeraja u pikselima (podrazumevano iznosi 3) i njihovog iscrtavanja na svakih 100ms, kao i evidentiranja broja figura svake vrste na prosleđenim grafičkim natpisima. Moguće je pokrenuti scenu i dohvatiti informaciju da li scena trenutno radi, kao i dodati figuru na scenu. Ukoliko se figura koja se dodaje na scenu preklapa sa nekom od postojećih figura na sceni ili figura ne staje cela na scenu, operacija dodavanja je bez efekta. Ukoliko se figura sudari sa nekom od ivica scene ili sa nekom drugom figurom, ona se od nje odbija pod odbojnim uglom identičnim upadnom uglu (elastični sudar). U slučaju da se dve figure sudare, slabija figura se izbacuje sa scene i nju zamenjuje nova figura iste vrste kao i jača, koja preuzima vektore položaja, pomeraja i poluprečnik izbačene figure. U slučaju da se na sceni nalaze samo figure iste vrste, scena pauzira svoj rad, na sredini ispisuje tekst KRAJ i zahteva od glavnog prozora da omogući komponentu za unos broja figura, a onemogući komponente za izbor figure i veličine pomeraja figura (koje će biti ponovo omogućene bilo kojom opcijom iz menija glavnog prozora). Moguće je postaviti štopericu, izbaciti sve figure čije kružnice obuhvataju prosleđeni vektor položaja, obrisati sve figure sa scene (pri čemu se resetuju i brojači figura i štoperica, a scena zahteva od glavnog prozora ažuriranje odgovarajućih grafičkih natpisa), dohvatiti broj figura na sceni, postaviti i dohvatiti vrednost pomeraja figura, kao i proveriti da li scena sadrži samo figure jednog istog tipa. Posao scene može da se privremeno pauzira, nastavi i trajno završi, pri čemu se pauzira, nastavlja i trajno završava i rad štoperice. Prilikom pauziranja posla scene, na sredini scene ispisuje se tekst PAUZA.
  • Generator se stvara sa zadatim dimenzijama scene. Može da generiše zadati maksimalan broj figura podrazumevanog poluprečnika koje se ne preklapaju tako što na pseudoslučajan način određuje njihove vektore položaja i pomeraja. Generator generiše figure na kružni način (najpre kamen, pa papir, pa makaze) i najviše 100 puta pokušava da rasporedi jednu figuru na prazno mesto na sceni, nakon čega odustaje od daljeg generisanja figura i vraća do tada stvorene figure kao listu figura.
  • Grafička simulacija je glavni prozor aplikacije (Frame) koji sadrži scenu. Prozor sadrži traku menija u kojoj se nalaze stavke menija za generisanje figura koristeći generator (što je moguće i opcijom CTRL + G), kao i brisanje svih figura sa scene (što je moguće i opcijom CTRL + B). Broj generisanih figura se zadaje u tekstualnom polju u dnu ekrana. U gornjem delu prozora nalazi se informacija o iznosu pomeraja figura u pikselima, čija vrednost je u opsegu [1-5] i može da se promeni za vrednost 1 pritiskom na odgovarajući taster označen napisom <<, odnosno >>, ali i resetuje na podrazumevanu vrednost pritiskom na taster označen natpisom h. U desnom delu prozora moguće je izabrati figuru koja se dodaje, pri čemu tekst izabrane figure „svetli“ belom bojom. Ovaj izbor je moguće izvršiti i korišćenjem tastera (strelica) gore i dole na tastaturi. U donjem delu prozora nalaze se natpisi sa informacijom o trenutnom broju figura svake vrste, tekstualno polje sa brojem figura, kao i natpis koji koristi štoperica. Pritiskom levog tastera miša na scenu stvori se izabrana figura podrazumevanog poluprečnika čiji vektor položaja odgovara koordinatama miša, dok se vektor pomeraja generiše na pseudoslučajan način. Desnim pritiskom tastera miša na scenu vrši se uklanjanje svih figura čije kružnice obuhvataju koordinate miša. Moguće je pauzirati i nastaviti posao scene pritiskom na taster Space, dok se pritiskom na taster Esc zatvara glavni prozor i sve niti trajno završavaju svoj rad. Dok scena obavlja svoj posao nije moguća interakcija sa scenom, kao ni sa komponentama za izbor figure i unos broja figura. Interakcija sa scenom kao i sa prethodno navedenim komponentama je moguća kad je na sceni ispisan tekst PAUZA.
Tabela za ocenjivanje
Klasa/Grupa Opis funkcionalnosti Poeni
Figure Postoji radio dugmad za izbor figura; trenutni izbor svetli 10
Dodavanje figure u zavisnosti od izbora, levim klikom miša 5
Brisanje figure desnim klikom miša 5
Iscrtavanje makaza 5
Iscrtavanje papira 5
Štoperica Postoji labela sa Štopericom 5
Štoperica teče 5
Štoperica se zaustavlja/radi na Space 5
Sudari Zamena slabija Figure jačom pri sudaru 5
Kraj simulacije kad preostanu samo Figure iste vrste 5
Glavni prozor Postoji labela za prikaz broja Figura i tekstualno polje za ukupan broj Figura 5
Ažuriranje labela za prikaz broja figura i tekstualnog polja za ukupan broj Figura 5
Postojanje menija sa opcijama 5
Generisanje zadatog broja figura kroz meni i preko prečice 10
Brisanje svih figura sa scene kroz meni i preko prečice 5
Resetovanje štoperice kroz meni i na prečicu 5
Panel na severu sa opcijama za pomeranje 5
Povećanje, smanjenje i resetovanje vrednosti pomeraja 5

Popravni Lab

Zadatak se pojavio na junskoj popravnoj laboratorijskoj vežbi u prvom, jedinom, terminu. Postavka osnovnog zadatka je dostupna [1]

Sastaviti na jeziku Java sledeći paket klasa:

  • Polje je platno (Canvas) koje se stvara sa zadatom bojom pozadine i njivom (videti niže) na kojoj se nalazi. Moguće je polje obavestiti da li je trenutno izabrano (selektovano) polje na njivi. Ukoliko je polje izabrano, prilikom crtanja se dodatno crta crveni pravougaonik koji je malo manji od samog polja (videti sliku). Na jednom polju se u jednom trenutku može nalaziti najviše jedan akter (videti niže). Moguće je postaviti aktera na polje. Greška je ukoliko se na polju već nalazi drugi akter. Moguće je proveriti da li se bilo koji akter nalazi na polju. Moguće je dohvatiti aktera koji se nalazi na polju. Greška je ukoliko na polju trenutno nema aktera. Moguće je ukloniti aktera sa polja. Prilikom crtanja polja crta se i akter ukoliko je postavljen.
  • Zemljano polje je polje braon boje.
  • Vodeno polje je polje koje se stvara sa početnom količinom vode 10. Moguće je uzeti vodu sa polja i uspešnost ove operacije je povratna vrednost funkcije, dok je ona uspešna samo ako je preostalo vode da se uzme.
  • Aktivno kukuruzno polje je polje koje se inicijalno stvara zeleno dok joj se radnja sastoji od postepenog uzimanja vode od nekog okolnog vodenog polja i mirovanja 600 milisekundi. Tom prilikom se boja postepeno menja ka žutoj, a potrebno je 5 promena (na labu je objašnjeno da se ovo radi dodavanjem 51 na blu parametar Kolor-a) da bi "kukuruz sazreo". Tada polje ima 4 zrna, a broj zrna se ispisuje na gornjem levom delu polja (crnom bojom).
  • Aktivni akter periodično obavlja određenu radnju. Stvara se sa zadatom bojom, minimalnim i maksimalnim vremenom mirovanja između obavljanja radnji. Aktera je moguće postaviti na zadato polje. Aktera je moguće crtati na zadatom polju. Rad aktera je moguće trajno zaustaviti..
  • Jaje je akter koji nestaje za 5 do 7 sekundi od stvaranja i crta se kao oval sa crnim obodom one boje što mu je zadata, i takođe ima svoju vrednost.
  • Kokošije jaje je jaje krem boje (dat je bio RGB ove boje) vrdnosti 500.
  • Pačje jaje je jaje bele boje vrednosti 1000.
  • Ptica je akter. Radnja ptice se sastoji u pomeranju na nasumično susedno polje na njivi na

kome nema postavljenog aktera. Ukoliko nema takvog polja ptica ostaje na polju na kome se nalazi. Ukoliko se nalazi na kukuruznom polju, poješće zrno sa njega. Kada pojede onoliko zrna koliko joj je potrebno da snese jaje, ptica snosi jaje na tom polju i napušta ga Ptica se crta u vidu velikog popunjenog kruga njenom bojom i u njemu upisanog malog crvenog kruga. Ptica možda ne može da ode na neko polje i tada ga ne razmatra u procesu gore.

  • Kokoška je ptica bele boje. Kada pojede 5 zrna, snosi jaje. Ne ume da pliva.
  • Patka je ptica sive boje i snosi jaje kad pojede 6 zrna. Ume da pliva.
  • Njiva je rešetka polja. Stvara se sa zadatim brojem redova i kolona rešetke. Sva polja na

njivi su zemljana, a izabrano je polje koje se nalazi u gornjem levom uglu. Na izabrano polje je moguće postaviti zadatog aktera. Moguće je trajno zaustaviti rad svih akterai polja na njivi. Moguće je postaviti da novoizabrano polje njive bude neko od susednih polja trenutno izabranog polja. Moguće je dohvatiti listu susednih polja zadatom polju. Moguće je dohvatiti trenutno izabrano polje. Moguće je uzeti vodu sa nekog od susednog polja zadatog polja pri čemu se pozivajuća nit blokira ako nema polja odakle može uzeti vodu. Moguće je zameniti izabrano polje sa zadatim.

  • Simulacija farme je glavni prozor aplikacije (Frame) koji sadrži njivu. U centralnom delu

prozora se prikazuje njiva dok se sa desne strane nalazi komanda za kupovinu, kao i informacija o tren/utnoj količini novca (videti sliku). Količina novca koju korisnik ima na raspolaganju pri pokretanju programa jednaka je 2000. Kupovinom kokoške ona se postavlja na izabrano polje njive i troši se iznos novca naveden u zagradama (cena kokoške). Klikom na strelice na tastaturi menja se izabrano polje na njivi prelaskom na njemu susedno u zadatom smeru. Dugme za kupovinu kokoške se onemogućava kada korisnik nema dovoljno novca za kupovinu. Takođe postoje dugmad za kupovinu vodenog polja (100 dinara), kukuruznog (200 dinara), patke (600) dinara koja se sva o(ne)mogućavaju zavisno od novca. Prati se i zarada i trenutni novac (labela za zaradu kreće od 0). Pritiskom na taster SPACE prodaje se jaje koje je na selektovanom polju (ako jeste neko jaje) i dodaje se novac na trenutni novac kao i na zaradu. Kupovinom polja menja se trenutno polje na ono kupljeno.

Tabela za ocenjivanje
Klasa/Grupa Opis funkcionalnosti Poeni
Patka, promenjena ptica 20
Kukuruz i voda - rad i iscrtavanje 20
Dugmad za dodavanje, rad simulacije i labele 20
Jaja, prodaja, snošenje, iscrtavanje 10
Kod (stil) 10

Napomene

Sve informacije pisane su po sećanju studenata.