X-Git-Url: http://svarog.pmf.uns.ac.rs/gitweb/?p=spa2-materijali.git;a=blobdiff_plain;f=PretrazivanjeSaVracanjem%2FLavirint%2FSuperKomplikovanoResenje%2FPut.java;h=c6bdda89a9682f967b5b55265d39b0913711ae07;hp=9ecf9a1e655c7be5e1b30773e1ad8c344f1925f0;hb=3f17bcf9a9707819b583e7940611c49185011ae7;hpb=950dc9f4ad875f11642668728d7c9493b5c9fe73 diff --git a/PretrazivanjeSaVracanjem/Lavirint/SuperKomplikovanoResenje/Put.java b/PretrazivanjeSaVracanjem/Lavirint/SuperKomplikovanoResenje/Put.java index 9ecf9a1..c6bdda8 100644 --- a/PretrazivanjeSaVracanjem/Lavirint/SuperKomplikovanoResenje/Put.java +++ b/PretrazivanjeSaVracanjem/Lavirint/SuperKomplikovanoResenje/Put.java @@ -9,91 +9,91 @@ import javafx.scene.paint.Color; */ 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(); - System.out.println("Put duzine " + getLength() + " i vrednosti " + getVrednost()); - 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; - } + // 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(); + System.out.println("Put duzine " + getLength() + " i vrednosti " + getVrednost()); + 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; + } }