2014-03-04 3 views
-5

Пример Maze:Как пройти Java лабиринт с помощью стеки

WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW 
WSOOOOOOOOOOOOOOWOOOOOOOOOOOOOOOOOWOOOOOOOOOOOOOOOWOOOOOOW 
WWOOOOOOOOOOOOOWWWWWWWWWWWWWOOOOOOOOOOWWWWWWWWWWWWWOOOOOOW 
WWWWWWOOOOOOOOOOOOWWWWWWWOOOOOOOOOOOOWWWWWWWWWWWWWWWWOOOOW 
WOOOOOOWWWWWWWWWWWWWWOOOOOOOOOOOWWWWWWWWOOOOOOOOOOOOOOOWWW 
WOOOOWWWWWWWOOOOOOWWWWOOOOOOWWWWWWWWWWWOOOOWWWWWWWWWOWWWWW 
WOOOWWWWWWWWWWWWOOWWWWWWWWWWWWOOOOOOOOOOOOWWWWWWWWWOOOOOWW 
WOOWWWWWWWWWWWWWOOWWWWWWWWWWWWWWWWWOOOOOOOWWWWWWWWWWWWOOOW 
WOWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWOOOOOOOWWWWWWWWWWWOOW 
WOWWWWWWWWWWWWWOOOOOOOOOOOOOOOOOOOOOOOOOOOOWWWWWWWWWWWWOOW 
WOOOOOOOOOOOOOOOOWWWWOOOOOOOOWWWWWWWOOOOOOWWWWWWWWWWWWWOFW 
WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW 

Мы должны принять в текстовый файл, как и выше, и возвращает истину или ложь, если она разрешима, используя стеки.

Мой вопрос: Как взять символы, один за другим, из файла и назначить их как точки в 2D-массиве, чтобы вставить в стек? Я вроде есть немного псевдокода ниже ...

Вот что у меня есть ...

import java.io.File; 
import java.io.FileNotFoundException; 
import java.util.Scanner; 
import java.util.Stack; 
import java.awt.Point; 


public class MazeExplorer { 
    public static int x; 
    public static int y; 

    final int mazeHeight = 12; 
    final int mazeWidth = 58; 
    public static char[][] mazeLocationPoints = new char[12][58]; 

    public static void main(String[] args) throws FileNotFoundException{ 

     File f = new File("Maze1.txt"); 
     Scanner sc = new Scanner(f); 
     String mazeString = new Scanner(f).useDelimiter("\\A").next(); 

     Stack<Point> points = new Stack<>(); 
     while(sc.hasNextLine()){ 
      mazeLocationPoints[][] = sc.nextLine().toCharArray(); 
      points.push(mazeLocations); 


     } 

    } 

} 

Я не имею понятия, как не для создания точек из мест лабиринте ..?

Этот лабиринт 12 x 58, и я преобразован в строку, но как я это делаю. Я назначаю значение точки (x, y) для каждого местоположения (char)? Я знаю, что нижняя часть неверна, это просто показать, что я хочу сделать.

Перебор DIMENSION:

import java.io.File; 
import java.io.FileNotFoundException; 
import java.util.Scanner; 
import java.util.Stack; 
import java.awt.Point; 


public class MazeExplorer { 
    public static int x; 
    public static int y; 

    final static int mazeHeight = 12; 
    final static int mazeWidth = 58; 
    public static char[][] mazePoints = new char[12][58]; 

    public static void main(String[] args) throws FileNotFoundException{ 

     File f = new File("Maze1.txt"); 
     Scanner sc = new Scanner(f); 
     String mazeString = new Scanner(f).useDelimiter("\\A").next(); 

     Stack<Point> points = new Stack<>(); 

     for(int i = 0; i < mazeHeight; i++){ 
      for(int j = 0; j < mazeWidth; j++){ 
       mazePoints[i][j] = 
      } 

     } 

    } 

} 
+0

так что куча людей просто собирается оскорбить меня, потому что я не мог понять, как вставить мой код, удалить свои комментарии и уложить мой вопрос? – bazookyelmo

+1

Ваш код показывает нулевое усилие. Вы читаете файл со сканером. Что это связано с попыткой создать точки или пройти лабиринт? – crush

+0

@ user3349062 - Stack Overflow - это сайт Q & A. Если вам нужна помощь по определенной проблеме программирования, вы должны показать нам, что вы сначала попытались решить ее самостоятельно, а затем вам нужно собрать вопрос хорошего качества. Если вопрос имеет низкое качество или не показывает никаких усилий со стороны искателя, он отклоняется. –

ответ

0

Прежде всего, вы должны инициализировать свой mazePoints массив со статическим Интсом вы объявили:

public static char[][] mazePoints = new char[mazeHeight][mazeWidth]; 

Но вам нужно пометить их статические первые :

private static final int mazeHeight = 12; 
private static final int mazeWidth = 58; 

Если они не предназначены для статического электричества, hould your mazePoints массив.

Далее, вы должны прочитать файл построчно, а не читать все вещи сразу:

final Scanner scanner = new Scanner(f); 

for (int row = 0; row < mazeHeight && scanner.hasNext(); row++) { 
    final String mazeRow = scanner.next(); //Get the next row from the scanner. 
    mazePoints[row] = mazeRow.toCharArray(); //Convert the row into a char[]. 
} 

Вы сделали. Теперь у вас есть все свои очки в mazePoints.

Примечание Это new Scanner(f).useDelimiter("\\A").next();, что вы использовали, просто изменяя разделитель по умолчанию, так что читать весь файл сразу. Вы не хотите этого поведения. Используйте поведение по умолчанию, которое читает строку за раз.

Вы можете вслепую пройти весь 2D-массив следующим образом, однако вам, вероятно, потребуется реализовать некоторый тип алгоритма, а не итерировать весь 2D-массив.

for (int y = 0; y < mazeHeight; y++) { 
    for (int x = 0; x < mazeWidth; x++) { 
     Point point = new Point(x, y); 
     //Do whatever with your point... 
    } 
} 
+0

Имеются ли у точек присвоенные им значения char? – bazookyelmo

+0

Вот что значит 'mazePoints [row] = mazeRow.toCharArray();' делает, да. – crush

+0

Итак, чтобы перетащить мои перемещенные местоположения в стек (начиная с 'S'), проделать ли я итерацию через массив 2d или файл? – bazookyelmo

Смежные вопросы