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
1 import java.util.ArrayList;
2 import java.util.Collections;
3 import java.util.List;
5 import javafx.scene.paint.Color;
7 /**
8 * Klasa Put koristi se za pamcenje puta kroz mapu.
9 */
10 public class Put {
12 // Pamtimo sva polja na putu
13 private ArrayList<Polje> polja;
15 // Dodato da se omoguci pristup poljima puta "od spolja" (za proveru kvaliteta puta na primer),
16 // ali tako da ne moze da se utice na sam sadrzaj te liste
17 private List<Polje> nepromenljivaListaPolja;
19 // Potrebno za graficki prikaz
20 private String naziv;
22 // Potrebno za graficki prikaz
23 private Put(String naziv, Color boja) {
24 polja = new ArrayList<Polje>();
25 nepromenljivaListaPolja = Collections.unmodifiableList(polja);
26 this.naziv = naziv;
27 Prikaz.put(naziv, polja, Polje::getX, Polje::getY, this::toString, boja);
28 }
30 // Kreira novo prazno resenje
31 public Put() {
32 this("Trenutni", Prikaz.TIRKIZNA);
33 }
35 // Kreira novo resenje sa istim sadrzajem kao original
36 public Put(Put original) {
37 this("Optimalan", Prikaz.LJUBICASTA);
38 polja.addAll(original.polja);
39 }
41 // Dodaje polje u resenje
42 public void dodaj(int x, int y, int v) {
43 polja.add(new Polje(x, y, v));
44 Prikaz.osveziPut(naziv);
45 }
47 // Izbacuje poslednje polje iz puta
48 public void izbaciKraj() {
49 if (getLength() > 0) {
50 polja.remove(getLength() - 1);
51 Prikaz.osveziPut(naziv);
52 } else {
53 throw new IllegalStateException("Resenje je vec prazno");
54 }
55 }
57 // Stampa put
58 public void stampaj() {
59 System.out.println(getLength());
60 for (int i = 0; i < getLength(); i++) {
61 System.out.println(polja.get(i));
62 }
63 Prikaz.put("Trenutni", null, null, null);
64 Prikaz.put("Optimalan", null, null, null);
65 Prikaz.put("Najbolji", polja, Polje::getX, Polje::getY, this::toString, Prikaz.LJUBICASTA);
66 }
68 public String toString() {
69 return getVrednost() + "\u20ac " + getLength() + "m";
70 }
72 // Vraca duzinu puta
73 public int getLength() {
74 return polja.size();
75 }
77 // Vraca i-to polje na putu
78 // Ne koristi se u ovoj verziji zadatka. Moze se koristiti za proveru kvaliteta resenja
79 public Polje getPolje(int i) {
80 return polja.get(i);
81 }
83 // Vraca sva polja na putu
84 // Ne koristi se u ovoj verziji zadatka. Moze se koristiti za proveru kvaliteta resenja
85 public List<Polje> getPolja() {
86 return nepromenljivaListaPolja;
87 }
89 // Vraca vrednost puta
90 // Vrednost se definise kao zbir svih vrednosti polja na putu
91 public int getVrednost() {
92 int rez = 0;
93 for (Polje p : polja) {
94 rez = rez + p.getV();
95 }
96 return rez;
97 }
98 }
Svarog.pmf.uns.ac.rs/gitweb maintanance Doni Pracner