gitweb on Svarog

projekti pod git sistemom za održavanje verzija -- projects under the git version control system
Lavirint, objedinjeno resenje, doterane praznine i formatiranja
[spa2-materijali.git] / PretrazivanjeSaVracanjem / Lavirint / SuperKomplikovanoResenje / 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();
60 System.out.println("Put duzine " + getLength() + " i vrednosti " + getVrednost());
61 for (int i = 0; i < getLength(); i++) {
62 System.out.println(polja.get(i));
63 }
64 Prikaz.put("Trenutni", null, null, null);
65 Prikaz.put("Optimalan", null, null, null);
66 Prikaz.put("Najbolji", polja, Polje::getX, Polje::getY, this::toString, Prikaz.LJUBICASTA);
67 }
69 public String toString() {
70 return getVrednost() + "\u20ac " + getLength() + "m";
71 }
73 // Vraca duzinu puta
74 public int getLength() {
75 return polja.size();
76 }
78 // Vraca i-to polje na putu
79 // Ne koristi se u ovoj verziji zadatka. Moze se koristiti za proveru kvaliteta resenja
80 public Polje getPolje(int i) {
81 return polja.get(i);
82 }
84 // Vraca sva polja na putu
85 // Ne koristi se u ovoj verziji zadatka. Moze se koristiti za proveru kvaliteta resenja
86 public List<Polje> getPolja() {
87 return nepromenljivaListaPolja;
88 }
90 // Vraca vrednost puta
91 // Vrednost se definise kao zbir svih vrednosti polja na putu
92 public int getVrednost() {
93 int rez = 0;
94 for (Polje p : polja) {
95 rez = rez + p.getV();
96 }
97 return rez;
98 }
99 }
Svarog.pmf.uns.ac.rs/gitweb maintanance Doni Pracner