import java.awt.Color; import java.awt.Font; import java.io.*; public class Labyrinth { public static ResultLabyrinth readLabyrinth(String filename) { FileInputStream fin = null; InputStreamReader iin = null; LineNumberReader lnr = null; ResultLabyrinth result = new ResultLabyrinth(); try { if (Basis.FileExists(filename)) { fin = new FileInputStream(filename); iin = new InputStreamReader(fin); lnr = new LineNumberReader(iin); // oder BufferedReader br = new BufferedReader(ir); // x / y String line = lnr.readLine(); Integer[] numbers = Basis.convert2Numbers(line); if (numbers == null) { Basis.Message("Fehlerhafte Anzahl des Labyrinths", "Fehler"); return null; } int maxy = numbers[0]; int maxx = numbers[1]; result.maxy = maxy; result.maxx = maxx; result.buttons = new MyJButton[maxy][maxx]; for (int i = 0; i < maxy; i++) { for (int j = 0; j < maxx; j++) { MyJButton bn = new MyJButton(Integer.toString(i) + "/" + Integer.toString(j)); bn.setFont(new Font("Arial", Font.BOLD, 16)); bn.setBackground(Color.WHITE); bn.setStatus(Status.FREI); result.buttons[i][j] = bn; } } // ---------------------------------------------- line = lnr.readLine(); numbers = Basis.convert2Numbers(line); if (numbers == null) { Basis.Message("Fehlerhafte Anzahl der Startzelle", "Fehler"); return null; } int starty = numbers[0]; int startx = numbers[1]; result.buttons[starty][startx].setStatus(Status.START); result.buttons[starty][starty].setBackground( new Color(255,127,127)); result.startx = startx; result.starty = starty; // ---------------------------------------------- line = lnr.readLine(); numbers = Basis.convert2Numbers(line); if (numbers == null) { Basis.Message("Fehlerhafte Anzahl der Zielzelle", "Fehler"); return null; } int ziely = numbers[0]; int zielx = numbers[1]; result.buttons[ziely][zielx].setStatus(Status.ZIEL); result.buttons[ziely][zielx].setBackground( Color.GREEN ); result.zielx = zielx; result.ziely = ziely; while (true) { line = lnr.readLine(); numbers = Basis.convert2Numbers(line); if (numbers == null) { Basis.Message("Fehlerhafte Anzahl der Zielzelle", "Fehler"); return null; } if (numbers[0]>=0 && numbers[1]>=0) { result.buttons[numbers[0]][numbers[1]].setStatus(Status.WAND); result.buttons[numbers[0]][numbers[1]].setBackground( new Color(200,200,200)); } else { break; } } // while } else { Basis.Message("Die Datei existiert nicht\n" + filename, "Hinweis"); } } catch (FileNotFoundException e1) { System.err.println("Datei war nicht vorhanden!"); } catch (IOException ee) { System.err.println("IOException: " + ee); } finally { try { if (lnr != null) lnr.close(); if (iin != null) iin.close(); if (fin != null) fin.close(); } catch (IOException ee) { System.err.println("IOException: " + ee); } } return result; } }