gitweb on Svarog

projekti pod git sistemom za održavanje verzija -- projects under the git version control system
Lavirint, objedinjeno resenje, ubacen prikaz puteva
[spa2-materijali.git] / PretrazivanjeSaVracanjem / Lavirint / ObjedinjenoResenje / Resenje.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 Resenje koristi se za pamcenje puta kroz mapu.
9 */
10 public class Resenje {
12 // Pamtimo sva polja na putu
13 private ArrayList<Polje> polja;
15 // Dodato da se omoguci pristup poljima resenja "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 Resenje(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 Resenje() {
32 this("Trenutni put", Prikaz.TIRKIZNA);
33 }
35 // Kreira novo resenje sa istim sadrzajem kao original
36 public Resenje(Resenje original) {
37 this("Najbolji put", 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 resenja
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 resenje
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 }
64 public String toString() {
65 return getVrednost() + "\u20ac " + getLength() + "m";
66 }
68 // Vraca duzinu resenja
69 public int getLength() {
70 return polja.size();
71 }
73 // Vraca i-to polje na putu
74 // Ne koristi se u ovoj verziji zadatka. Moze se koristiti za proveru kvaliteta resenja
75 public Polje getPolje(int i) {
76 return polja.get(i);
77 }
79 // Vraca sva polja na putu
80 // Ne koristi se u ovoj verziji zadatka. Moze se koristiti za proveru kvaliteta resenja
81 public List<Polje> getPolja() {
82 return nepromenljivaListaPolja;
83 }
85 // Vraca vrednost puta
86 // Vrednost se definise kao zbir svih vrednosti polja na putu
87 public int getVrednost() {
88 int rez = 0;
89 for (Polje p : polja) {
90 rez = rez + p.getV();
91 }
92 return rez;
93 }
94 }
Svarog.pmf.uns.ac.rs/gitweb maintanance Doni Pracner