У меня такое чувство, что этот вопрос будет чем-то действительно здравым смыслом, что я преувеличиваю. Я работаю над программой генерации случайных лабиринтов, поэтому, учитывая ширину, высоту и максимальную длину пути, он будет произвольно выбирать начальную точку и генерировать путь до тех пор, пока не будет достигнута максимальная длина пути, или она не опустится/застрянет, тогда выберет новую начальную точку для другого пути и повторит до тех пор, пока вся сетка не будет заполнена. Я просто создаю его для практики.Как создать правильную взаимосвязь между классами
У меня есть 3 класса, но я думаю, что я действительно не понимаю, как они должны взаимодействовать, или как я должен заставить их взаимодействовать для достижения наилучшей производительности и т. Д. Одна вещь, в частности, я просто знаю, это ужасная практика. Поскольку мои классы Path и Point должны работать в сетке точек, созданных в классе Maze, я передаю конструкторы Path и Point, что Array of Points. Он «работает» ... но я просто понял, что при этом я получаю бесконечный цикл, в котором я создаю сетку, и создаю все точки для этой сетки, а в тех точках передаю массив очков, и каждый из тех точек получает переданный массив очков, навсегда.
Я думал о том, что Path и Point расширяют Maze, но я не думаю, что это правильные отношения. Я googled интерфейсы и абстрактные классы, чтобы увидеть, может быть, это то, что я хотел, но это тоже казалось неправильным.
Maze конструктор:
public class Maze
{
private int fileNum = 0;
private Random rand = new Random();
private Point[] grid;
private int width, height;
private int pathLength;
private int curLoc;
private boolean debug, toTxt, toPng, hasValidNewHead = true;
public int frameNum = 0;
public int lastPercent = 0;
public Maze(int iWidth, int iHeight, int iPathLength, boolean d, boolean txt, boolean png)
{
width = iWidth;
height = iHeight;
pathLength = iPathLength;
grid = new Point[width * height];
debug = d;
toTxt = txt;
toPng = png;
}
Путь конструктор:
public class Path
{
private Random rand = new Random();
private Maze maze;
private int length, maxLength, lastDir, height, width;
private int curLoc;
private boolean generating;
private Point[] grid;
private boolean debug, toTxt, toPng;
public Path(int head, int gridWidth, int gridHeight, int ml, Point[] iGrid, Maze m, boolean d, boolean txt, boolean png)
{
maze = m;
generating = true;
lastDir = -1;
length = 1;
grid = iGrid;
curLoc = head;
height = gridHeight;
width = gridWidth;
maxLength = ml;
debug = d;
toTxt = txt;
toPng = png;
}
Точка конструктор:
public class Point
{
private int x, y, width, height;
private Point[] grid;
private int type, curLoc;
public Point(int iX, int iY, int w, int h, Point[] iGrid)
{
x = iX;
y = iY;
width = w;
height = h;
grid = iGrid;
curLoc = Arrays.asList(grid).indexOf(this);
type = 0;
}
Вместо описания вашего кода отправьте его. –
Вы можете получить более быстрые ответы, если опубликовать некоторые фрагменты кода, показывающие, что у вас есть сейчас, и то, что вы видите как проблемы с ним. Теперь, как ваш вопрос, люди должны больше думать, чтобы понять, к чему вы клоните. –
Извините, сейчас редактировалось @JBNizet – nwash57