Решая лабиринт в Java?

516
11 мая 2017, 11:01

Поскольку в программе должны присутствовать общие классы Queue, Stack и Coordinate, необходимо создать 4 объекта:

  • Один объект класса Stack <Coordinate>, называемый «path», и объект класса Stack > под названием «возможности», оба из которых могут хранить 40 координат (5 x 8 - 5 строк и 8 столбцов);

  • Один объект класса Queue <Coordinate>, называемый «queue», который хранит 3 координаты и ставит в очередь пустые пробелы или символ «S» вокруг текущей позиции, найденной при поиске по всем 4 направлениям. (В первом поиске, например, очередь будет: [(1,1),,] As 1,1 - это первое свободное место, найденное из начальной позиции, которое затем добавляется в очередь).

  • Один объект класса Coordinate, называемый «current», который представляет текущую позицию.

5 представляет количество строк. 8 - количество столбцов. Символ # представляет собой стену, непроходимую местность. Символ E является стартовой позицией, символ S - это выход, а пустые пробелы (char '') представляют собой пробелы. Таким образом, программа сначала передает лабиринт текстового файла в матрицу с указанным числом строк и столбцов на ней (5 и 8), а затем находит символ E, который является стартовой позицией и создает "текущую" Объект, сохраняя на нем свою координату ((1,0) в случае).

Оттуда он ищет все 4 направления вокруг текущей позиции по часовой стрелке (вверх, вправо, вниз и влево в этом порядке) и сохраняет координаты пустых пространств (или char 'S'), найденных в объекте "queue" И удаляет первую координату из «очереди», сохраняя эту координату на «текущем» объекте, который представляет текущую позицию. Затем, на матрице, помещает символ * в позицию, представленную «текущим» объектом (координатой), указывая, что был сделан шаг. Затем складывает объект «текущий» в объект «путь» и складывает объект «очередь» на объект «возможности». Затем повторяет эти шаги, пока не найдет выход (символ S), печать матрицы и закрытие программы.

В конце, поскольку каждая позиция отмечена символом *, матрица должна выглядеть так: (Текстовый файл не изменяется).

   5
   8
   ########
   E***   #
   ###*####
   ###*####
   ###S####

До сих пор я создавал классы:

Queue:

public class Fila <T> {
    private Object[objfila] = null;
    private int quantidade,posinicial,posfinal;
    public void inserir(Object x) throws Exception
    {
        if(quantidade==objfila.length)
            throw new Exception("Queue is full");
        x=objfila(posfinal);
        quantidade++;
        posfinal++;
    }
    public void remover() throws Exception
    {
        if(quantidade==0){
            throw new Exception("there are no elements on the queue");
        }
        quantidade--;
        posinicial++;
    }
    public Fila(int capacidade)
    {
        this.posinicial=0;
        this.posfinal=0;
        Object objfila=new Object();
    }
}

Stack:

public class Pilha <T> {
    private Object[] objpilha = null;
    private int topo;
    public void inserir(T x) throws Exception
    {
        if(topo==objpilha.length-1){
            throw new Exception("the stack is full.");
        }
        topo++;
        objpilha[topo]=x;
    }
    public void remover() throws Exception
    {
        if(topo==-1){
            throw new Exception("there are no elements to be removed.");
        }
        topo--;
    }
    public Pilha(int capacidade){
        objpilha=new Object[capacidade];
        topo=-1;
    }
}

And Coordinate: (I think there should be an array of x and y that stores coordinates)

public class Coordenadas <T>{
    private int x;
    private int y;
}

У меня возникают проблемы с созданием этих объектов и вставкой их в другие объекты, например, при сохранении найденных координат в «очереди» и при укладке «текущего» объекта в объект «путь». Как правильно сделать эту программу?

Извините за длинный вопрос.

READ ALSO
Не могу понять почему не удалается данные?

Не могу понять почему не удалается данные?

Есть список и удаляю данные со значением busy но он оставляет 2-3 прля с этим значениемпочему?

373
Java + Selenide. Не проходит элементарный тест

Java + Selenide. Не проходит элементарный тест

Впервые работаю с Java и Intelij idea, да и собственно с Селенидом тожеПрежде использовал с# со студией и побывал Селениум

371
Добавление файла в архив с помощью метода putNextEntry()

Добавление файла в архив с помощью метода putNextEntry()

Объясните пожалуйста, как происходит добавление объекта ZipEntry в архив с помощью метода putNextEntry() класса ZipOutputStream, так как я новичок не получается...

308