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 / Mapa.java
1 /**
2 * Klasa Mapa koristi se za reprezentaciju lavirint i njegovih polja.
3 */
4 public class Mapa {
6 // Vrednosti polja i njihova znacenja
7 public final static int IZLAZ = -5;
8 public final static int ZID = -1;
9 public final static int GRESKA = Integer.MIN_VALUE;
11 // Dimenzije mape
12 private int visina, sirina;
14 // Polja mape
15 private int[][] mat;
17 // Prilikom pretrazivanja ovde mozemo pamtiti koja polja smo posetili a koja nismo
18 private boolean[][] pos;
20 public int getSirina() {
21 return sirina;
22 }
24 public int getVisina() {
25 return visina;
26 }
28 public void setPos(int x, int y, boolean b) {
29 if (0 <= x && x < sirina && 0 <= y && y < visina) {
30 pos[x][y] = b;
31 }
32 }
34 public boolean getPos(int x, int y) {
35 if (0 <= x && x < sirina && 0 <= y && y < visina) {
36 return pos[x][y];
37 } else {
38 return true;
39 }
40 }
42 public int getMat(int x, int y) {
43 if (0 <= x && x < sirina && 0 <= y && y < visina) {
44 return mat[x][y];
45 } else {
46 return GRESKA;
47 }
48 }
50 public Mapa(int sirina, int visina) {
51 this.sirina = sirina;
52 this.visina = visina;
53 mat = new int[sirina][visina];
54 pos = new boolean[sirina][visina];
55 }
57 public Mapa(String imeFajla) {
58 if (!Svetovid.testIn(imeFajla)) {
59 throw new RuntimeException("Fajl za kreiranje mape (" + imeFajla + ") nije prisupacan");
60 }
61 sirina = Svetovid.in(imeFajla).readInt();
62 visina = Svetovid.in(imeFajla).readInt();
63 mat = new int[sirina][visina];
64 pos = new boolean[sirina][visina];
65 for (int j = 0; j < visina; j++) {
66 for (int i = 0; i < sirina; i++) {
67 mat[i][j] = Svetovid.in(imeFajla).readInt();
68 }
69 }
70 Svetovid.closeIn(imeFajla);
71 Prikaz.boja(ZID, Prikaz.CRNA, null);
72 Prikaz.boja(IZLAZ, Prikaz.CRVENA, Prikaz.BELA);
73 Prikaz.boja(1, 20, Prikaz.SVETLO_ZELENA, Prikaz.ZELENA, Prikaz.CRNA);
74 Prikaz.boja(99, Prikaz.ZUTA, Prikaz.CRNA);
75 Prikaz.mapa("Lavirint", getSirina(), getVisina(), this::getMat);
76 }
78 public void stampaj() {
79 if (visina != 0 && sirina != 0) {
80 System.out.println();
81 System.out.println("Mapa sirine " + sirina + " i visine " + visina);
82 for (int j = 0; j < visina; j++) {
83 for (int i = 0; i < sirina; i++) {
84 System.out.printf("%5d", mat[i][j]);
85 }
86 System.out.println();
87 }
88 }
89 }
91 public String toString() {
92 return "Mapa velicine " + sirina + " x " + visina;
93 }
94 }
Svarog.pmf.uns.ac.rs/gitweb maintanance Doni Pracner