Мне нужно создать лабиринт в Java, где каждый раз (то есть каждый раз, когда я запускаю программу) создавался новый лабиринт.
Программа состоит из 3 уровней: начинающий (25 комнат), продвинутый (40 комнат) и экспертный (60 комнат), с игроками (до 20 игроков) и сокровищами, где каждый игрок должен получить как минимум одно сокровище.
Я сделал логическую сторону лабиринта, то есть я написал алгоритм лабиринта, где
каждый раз, когда программа случайным образом получает точку в плоскости (x, y) и добавляет ее к графику - G = (V, E), где вершинами являются rooms
, а ребрами являются connectors
(Дверь / Стена).
Теперь моя проблема в том, что мне нужно представить лабиринт с помощью графического интерфейса, поэтому я прикрепил SWT с сайта Eclipse к своей программе, но я не знаю, как использовать графический интерфейс для описания лабиринта / графика.
Сначала я хочу представить пользователю лабиринт до начала игры, то есть после создания лабиринта, до того, как игроки отправятся в путь.
Не могли бы вы дать мне подсказку, где или как начать?
соответствующие классы:
public class Room {
private ArrayList<Connector> connectors;
private int x; // x coordinate of the room
private int y; // y coordinate of the room
// constructor
Room(int xCoordinate,int yCoordinate)
{
//this.connectors = new HashMap<String,Connector>();
this.connectors = new ArrayList<Connector>();
this.x = xCoordinate;
this.y = yCoordinate;
}
Room()
{
this.x = 0;
this.y = 0;
}
public void addConnector(Connector connector)
{
this.connectors.add(connector);
}
/* Getters and Setters */
public int getXcoordinate()
{
return this.x;
}
public int getYcoordinate()
{
return this.y;
}
public void setXcoordinate(int newX)
{
this.x = newX;
}
public void setYcoordinate(int newY)
{
this.y = newY;
}
}
package model;
public class Door extends Connector {
// holds private Room[] rooms = new Room[2];
Door(Room room1,Room room2)
{
super(room1,room2);
}
public Room getNextRoom(Room room)
{
if(this.rooms[0].equals(room))
{
return this.rooms[1];
}
return this.rooms[0];
}
}
public abstract class Connector {
protected Room[] rooms = new Room[2];
public abstract Room getNextRoom(Room room);
public Connector(Room room1,Room room2) // building a new connector that connects between two rooms s
{
rooms[0] = room1;
rooms[1] = room2;
}
public Room getFirstRoom()
{
return this.rooms[0];
}
public Room getSecondRoom()
{
return this.rooms[1];
}
}
С уважением, Рон