gitweb on Svarog

projekti pod git sistemom za održavanje verzija -- projects under the git version control system
Lavirint, objedinjeno resenje, ubacen prikaz mape
[spa2-materijali.git] / PretrazivanjeSaVracanjem / Lavirint / ObjedinjenoResenje / Mapa.java
index 246191b..a39c662 100644 (file)
@@ -1,10 +1,21 @@
+\r
+/**\r
+ * Klasa Mapa koristi se za reprezentaciju lavirint i njegovih polja.\r
+ */\r
 public class Mapa {\r
+\r
+       // Vrednosti polja i njihova znacenja\r
        public final static int IZLAZ = -5;\r
        public final static int ZID = -1;\r
-       public final static int ERROR = Integer.MIN_VALUE;\r
+       public final static int GRESKA = Integer.MIN_VALUE;\r
 \r
+       // Dimenzije mape\r
        private int visina, sirina;\r
+       \r
+       // Polja mape\r
        private int[][] mat;\r
+\r
+       // Prilikom pretrazivanja ovde mozemo pamtiti koja polja smo posetili a koja nismo\r
        private boolean[][] pos;\r
 \r
        public int getSirina() {\r
@@ -33,7 +44,7 @@ public class Mapa {
                if (0 <= x && x < sirina && 0 <= y && y < visina) {\r
                        return mat[x][y];\r
                } else {\r
-                       return ERROR;\r
+                       return GRESKA;\r
                }\r
        }\r
 \r
@@ -44,24 +55,25 @@ public class Mapa {
                pos = new boolean[sirina][visina];\r
        }\r
 \r
-       public static Mapa ucitajIzFajla(String imeFajla) {\r
+       public Mapa(String imeFajla) {\r
                if (!Svetovid.testIn(imeFajla)) {\r
-                       return null;\r
+                       throw new RuntimeException("Fajl za kreiranje mape (" + imeFajla + ") nije prisupacan");\r
                }\r
-\r
-               int sirina = Svetovid.in(imeFajla).readInt();\r
-               int visina = Svetovid.in(imeFajla).readInt();\r
-               if (sirina >= 0 && visina >= 0) {\r
-                       Mapa res = new Mapa(sirina, visina);\r
-                       for (int j = 0; j < visina; j++)\r
-                               for (int i = 0; i < sirina; i++)\r
-                                       res.mat[i][j] = Svetovid.in(imeFajla).readInt();\r
-                       Svetovid.closeIn(imeFajla);\r
-                       return res;\r
-               } else {\r
-                       Svetovid.closeIn(imeFajla);\r
-                       return null;\r
+               sirina = Svetovid.in(imeFajla).readInt();\r
+               visina = Svetovid.in(imeFajla).readInt();\r
+               mat = new int[sirina][visina];\r
+               pos = new boolean[sirina][visina];\r
+               for (int j = 0; j < visina; j++) {\r
+                       for (int i = 0; i < sirina; i++) {\r
+                               mat[i][j] = Svetovid.in(imeFajla).readInt();\r
+                       }\r
                }\r
+               Svetovid.closeIn(imeFajla);\r
+               Prikaz.boja(ZID, Prikaz.CRNA, null);\r
+               Prikaz.boja(IZLAZ, Prikaz.CRVENA, Prikaz.BELA);\r
+               Prikaz.boja(1, 20, Prikaz.SVETLO_ZELENA, Prikaz.ZELENA, Prikaz.CRNA);\r
+               Prikaz.boja(99, Prikaz.ZUTA, Prikaz.CRNA);\r
+               Prikaz.mapa("Lavirint", getSirina(), getVisina(), this::getMat);\r
        }\r
 \r
        public void stampaj() {\r
@@ -75,4 +87,8 @@ public class Mapa {
                        }\r
                }\r
        }\r
+       \r
+       public String toString() {\r
+               return "Mapa velicine " + sirina + " x " + visina;\r
+       }\r
 }\r
Svarog.pmf.uns.ac.rs/gitweb maintanance Doni Pracner