X-Git-Url: http://svarog.pmf.uns.ac.rs/gitweb/?p=spa2-materijali.git;a=blobdiff_plain;f=PretrazivanjeSaVracanjem%2FLavirint%2FObjedinjenoResenje%2FPut.java;fp=PretrazivanjeSaVracanjem%2FLavirint%2FObjedinjenoResenje%2FPut.java;h=e9428836ce434675ed87f755a031992dece8f320;hp=0000000000000000000000000000000000000000;hb=1b832014e4d2d31b2502f4688623140d722005b1;hpb=76ef3a4960a1d7351cf521bfacb350d72628d53a diff --git a/PretrazivanjeSaVracanjem/Lavirint/ObjedinjenoResenje/Put.java b/PretrazivanjeSaVracanjem/Lavirint/ObjedinjenoResenje/Put.java new file mode 100644 index 0000000..e942883 --- /dev/null +++ b/PretrazivanjeSaVracanjem/Lavirint/ObjedinjenoResenje/Put.java @@ -0,0 +1,98 @@ +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + +import javafx.scene.paint.Color; + +/** + * Klasa Put koristi se za pamcenje puta kroz mapu. + */ +public class Put { + + // Pamtimo sva polja na putu + private ArrayList polja; + + // Dodato da se omoguci pristup poljima puta "od spolja" (za proveru kvaliteta puta na primer), + // ali tako da ne moze da se utice na sam sadrzaj te liste + private List nepromenljivaListaPolja; + + // Potrebno za graficki prikaz + private String naziv; + + // Potrebno za graficki prikaz + private Put(String naziv, Color boja) { + polja = new ArrayList(); + nepromenljivaListaPolja = Collections.unmodifiableList(polja); + this.naziv = naziv; + Prikaz.put(naziv, polja, Polje::getX, Polje::getY, this::toString, boja); + } + + // Kreira novo prazno resenje + public Put() { + this("Trenutni", Prikaz.TIRKIZNA); + } + + // Kreira novo resenje sa istim sadrzajem kao original + public Put(Put original) { + this("Optimalan", Prikaz.LJUBICASTA); + polja.addAll(original.polja); + } + + // Dodaje polje u resenje + public void dodaj(int x, int y, int v) { + polja.add(new Polje(x, y, v)); + Prikaz.osveziPut(naziv); + } + + // Izbacuje poslednje polje iz puta + public void izbaciKraj() { + if (getLength() > 0) { + polja.remove(getLength() - 1); + Prikaz.osveziPut(naziv); + } else { + throw new IllegalStateException("Resenje je vec prazno"); + } + } + + // Stampa put + public void stampaj() { + System.out.println(getLength()); + for (int i = 0; i < getLength(); i++) { + System.out.println(polja.get(i)); + } + Prikaz.put("Trenutni", null, null, null); + Prikaz.put("Optimalan", null, null, null); + Prikaz.put("Najbolji", polja, Polje::getX, Polje::getY, this::toString, Prikaz.LJUBICASTA); + } + + public String toString() { + return getVrednost() + "\u20ac " + getLength() + "m"; + } + + // Vraca duzinu puta + public int getLength() { + return polja.size(); + } + + // Vraca i-to polje na putu + // Ne koristi se u ovoj verziji zadatka. Moze se koristiti za proveru kvaliteta resenja + public Polje getPolje(int i) { + return polja.get(i); + } + + // Vraca sva polja na putu + // Ne koristi se u ovoj verziji zadatka. Moze se koristiti za proveru kvaliteta resenja + public List getPolja() { + return nepromenljivaListaPolja; + } + + // Vraca vrednost puta + // Vrednost se definise kao zbir svih vrednosti polja na putu + public int getVrednost() { + int rez = 0; + for (Polje p : polja) { + rez = rez + p.getV(); + } + return rez; + } +}