gitweb on Svarog

projekti pod git sistemom za održavanje verzija -- projects under the git version control system
091f37d8f8144fd353e663b0170d9ecf75ebcf97
[spa2-materijali.git] / PretrazivanjeSaVracanjem / Lavirint / SuperKomplikovanoResenje / Mapa.java
2 /**
3 * Klasa Mapa koristi se za reprezentaciju lavirint i njegovih polja.
4 */
5 public class Mapa {
7 // Vrednosti polja i njihova znacenja
8 public final static int IZLAZ = -5;
9 public final static int ZID = -1;
10 public final static int GRESKA = Integer.MIN_VALUE;
12 // Dimenzije mape
13 private int visina, sirina;
15 // Polja mape
16 private int[][] mat;
18 // Prilikom pretrazivanja ovde mozemo pamtiti koja polja smo posetili a koja nismo
19 private boolean[][] pos;
21 public int getSirina() {
22 return sirina;
23 }
25 public int getVisina() {
26 return visina;
27 }
29 public void setPos(int x, int y, boolean b) {
30 if (0 <= x && x < sirina && 0 <= y && y < visina) {
31 pos[x][y] = b;
32 }
33 }
35 public boolean getPos(int x, int y) {
36 if (0 <= x && x < sirina && 0 <= y && y < visina) {
37 return pos[x][y];
38 } else {
39 return true;
40 }
41 }
43 public int getMat(int x, int y) {
44 if (0 <= x && x < sirina && 0 <= y && y < visina) {
45 return mat[x][y];
46 } else {
47 return GRESKA;
48 }
49 }
51 public Mapa(int sirina, int visina) {
52 this.sirina = sirina;
53 this.visina = visina;
54 mat = new int[sirina][visina];
55 pos = new boolean[sirina][visina];
56 }
58 public Mapa(String imeFajla) {
59 if (!Svetovid.testIn(imeFajla)) {
60 throw new RuntimeException("Fajl za kreiranje mape (" + imeFajla + ") nije prisupacan");
61 }
62 sirina = Svetovid.in(imeFajla).readInt();
63 visina = Svetovid.in(imeFajla).readInt();
64 mat = new int[sirina][visina];
65 pos = new boolean[sirina][visina];
66 for (int j = 0; j < visina; j++) {
67 for (int i = 0; i < sirina; i++) {
68 mat[i][j] = Svetovid.in(imeFajla).readInt();
69 }
70 }
71 Svetovid.closeIn(imeFajla);
72 Prikaz.boja(ZID, Prikaz.CRNA, null);
73 Prikaz.boja(IZLAZ, Prikaz.CRVENA, Prikaz.BELA);
74 Prikaz.boja(1, 20, Prikaz.SVETLO_ZELENA, Prikaz.ZELENA, Prikaz.CRNA);
75 Prikaz.boja(99, Prikaz.ZUTA, Prikaz.CRNA);
76 Prikaz.mapa("Lavirint", getSirina(), getVisina(), this::getMat);
77 }
79 public void stampaj() {
80 if (visina != 0 && sirina != 0) {
81 System.out.println();
82 System.out.println("Mapa sirine " + sirina + " i visine " + visina);
83 for (int j = 0; j < visina; j++) {
84 for (int i = 0; i < sirina; i++) {
85 System.out.printf("%5d", mat[i][j]);
86 }
87 System.out.println();
88 }
89 }
90 }
92 public String toString() {
93 return "Mapa velicine " + sirina + " x " + visina;
94 }
95 }
Svarog.pmf.uns.ac.rs/gitweb maintanance Doni Pracner