Создать графический интерфейс для лабиринта в Java - PullRequest
0 голосов
/ 22 января 2012

Мне нужно создать лабиринт в 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];
    }



}

С уважением, Рон

1 Ответ

1 голос
/ 22 января 2012

Взгляните на http://www.eclipse.org/articles/Article-SWT-graphics/SWT_graphics.html.Вы можете рисовать линии, точки или любую другую геометрию, которая вам понадобится.

...