Поскольку в программе должны присутствовать общие классы 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;
}
У меня возникают проблемы с созданием этих объектов и вставкой их в другие объекты, например, при сохранении найденных координат в «очереди» и при укладке «текущего» объекта в объект «путь». Как правильно сделать эту программу?
Извините за длинный вопрос.
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости