Учитывая следующий код:
private void drawMaze(PaintEvent e)
{
Graph maze = new Graph();
maze.generateMaze(25);
int i = 0;
int level = 25;
e.gc.setAntialias(SWT.ON);
e.gc.setBackground(new Color(e.display, 150, 150, 150));
e.gc.setLineWidth(12);
while (i < level)
{
Connector connector = maze.getEdgeConnectorByIndex(i);
if (connector instanceof Door)
{
Room room1 = ((Door)connector).getFirstRoom();
Room room2 = ((Door)connector).getSecondRoom();
int x = room1.getXcoordinate()+10;
int y = room1.getYcoordinate()+10;
System.out.println(x);
System.out.println(y);
e.gc.fillRectangle(x,y,100,79);
e.gc.setBackground(e.display.getSystemColor(SWT.COLOR_BLUE));
e.gc.setForeground(e.display.getSystemColor(SWT.COLOR_GREEN));
e.gc.drawLine(x,y, 280+100,20);
}
i++;
}
}
класс BasicShapes
public class BasicShapes {
private Shell shell;
public BasicShapes(Display display) {
shell = new Shell(display);
shell.addPaintListener(new ExmaplePaingListener());
shell.setText("Basic shapes");
shell.setSize(1000, 700);
shell.setLocation(50, 50);
shell.open();
while (!shell.isDisposed()) {
if (!display.readAndDispatch()) {
display.sleep();
}
}
}
private class ExmaplePaingListener implements PaintListener {
public void paintControl(PaintEvent e) {
// drawRectangles(e);
drawMaze(e);
e.gc.dispose();
}
}
...
}
Мне нужно нарисовать лабиринт с разделителями в виде Дверь / Стена между каждыми двумя ячейками.В методе drawMaze () я сначала создаю граф G = (V, E) с вершинами и ребрами (vertices = комнаты, ребра = Door / Wall), а затем я хочу его использовать.
В цикле while я запускаю цикл по количеству ребер и каждый раз получаю координаты двух комнат (в плоскости x, y) и хочу напечатать 1-ую комнату ссоединитель (стена / дверь) с другой комнатой, но каждый раз, когда первая комната печатается на другой (и на остальных краях также).
Как это исправить?
С уважением, Рон