gitweb on Svarog

projekti pod git sistemom za održavanje verzija -- projects under the git version control system
Laviritn, Objedinjeno resenje, doterivanja
[spa2-materijali.git] / PretrazivanjeSaVracanjem / Lavirint / ObjedinjenoResenje / Put.java
diff --git a/PretrazivanjeSaVracanjem/Lavirint/ObjedinjenoResenje/Put.java b/PretrazivanjeSaVracanjem/Lavirint/ObjedinjenoResenje/Put.java
new file mode 100644 (file)
index 0000000..e942883
--- /dev/null
@@ -0,0 +1,98 @@
+import java.util.ArrayList;\r
+import java.util.Collections;\r
+import java.util.List;\r
+\r
+import javafx.scene.paint.Color;\r
+\r
+/**\r
+ * Klasa Put koristi se za pamcenje puta kroz mapu.\r
+ */\r
+public class Put {\r
+\r
+       // Pamtimo sva polja na putu\r
+       private ArrayList<Polje> polja;\r
+\r
+       // Dodato da se omoguci pristup poljima puta "od spolja" (za proveru kvaliteta puta na primer),\r
+       // ali tako da ne moze da se utice na sam sadrzaj te liste\r
+       private List<Polje> nepromenljivaListaPolja;\r
+\r
+       // Potrebno za graficki prikaz\r
+       private String naziv;\r
+\r
+       // Potrebno za graficki prikaz\r
+       private Put(String naziv, Color boja) {\r
+               polja = new ArrayList<Polje>();\r
+               nepromenljivaListaPolja = Collections.unmodifiableList(polja);\r
+               this.naziv = naziv;\r
+               Prikaz.put(naziv, polja, Polje::getX, Polje::getY, this::toString, boja);\r
+       }\r
+\r
+       // Kreira novo prazno resenje\r
+       public Put() {\r
+               this("Trenutni", Prikaz.TIRKIZNA);\r
+       }\r
+\r
+       // Kreira novo resenje sa istim sadrzajem kao original\r
+       public Put(Put original) {\r
+               this("Optimalan", Prikaz.LJUBICASTA);\r
+               polja.addAll(original.polja);\r
+       }\r
+\r
+       // Dodaje polje u resenje\r
+       public void dodaj(int x, int y, int v) {\r
+               polja.add(new Polje(x, y, v));\r
+               Prikaz.osveziPut(naziv);\r
+       }\r
+\r
+       // Izbacuje poslednje polje iz puta\r
+       public void izbaciKraj() {\r
+               if (getLength() > 0) {\r
+                       polja.remove(getLength() - 1);\r
+                       Prikaz.osveziPut(naziv);\r
+               } else {\r
+                       throw new IllegalStateException("Resenje je vec prazno");\r
+               }\r
+       }\r
+\r
+       // Stampa put\r
+       public void stampaj() {\r
+               System.out.println(getLength());\r
+               for (int i = 0; i < getLength(); i++) {\r
+                       System.out.println(polja.get(i));\r
+               }\r
+               Prikaz.put("Trenutni", null, null, null);\r
+               Prikaz.put("Optimalan", null, null, null);\r
+               Prikaz.put("Najbolji", polja, Polje::getX, Polje::getY, this::toString, Prikaz.LJUBICASTA);\r
+       }\r
+\r
+       public String toString() {\r
+               return getVrednost() + "\u20ac " + getLength() + "m";\r
+       }\r
+\r
+       // Vraca duzinu puta\r
+       public int getLength() {\r
+               return polja.size();\r
+       }\r
+\r
+       // Vraca i-to polje na putu\r
+       // Ne koristi se u ovoj verziji zadatka. Moze se koristiti za proveru kvaliteta resenja\r
+       public Polje getPolje(int i) {\r
+               return polja.get(i);\r
+       }\r
+\r
+       // Vraca sva polja na putu\r
+       // Ne koristi se u ovoj verziji zadatka. Moze se koristiti za proveru kvaliteta resenja\r
+       public List<Polje> getPolja() {\r
+               return nepromenljivaListaPolja;\r
+       }\r
+\r
+       // Vraca vrednost puta\r
+       // Vrednost se definise kao zbir svih vrednosti polja na putu\r
+       public int getVrednost() {\r
+               int rez = 0;\r
+               for (Polje p : polja) {\r
+                       rez = rez + p.getV();\r
+               }\r
+               return rez;\r
+       }\r
+}\r
Svarog.pmf.uns.ac.rs/gitweb maintanance Doni Pracner