Создание 2D-карты - PullRequest
       20

Создание 2D-карты

2 голосов
/ 25 апреля 2011

Я новичок в создании карт и хранении массивов, и мне было интересно, могу ли я получить некоторую помощь в этой задаче.Я работаю на Java и использую библиотеку LWJGL, если это вообще поможет.

Я не пытаюсь оторвать любую другую игру, поэтому она будет отличаться от любой другой игры.Мне просто понадобятся разные участки, такие как вода, трава и грязь.В конце концов я добавлю горы и холмы, буду лазать и т. Д.

Мне нужно знать, как этого достичь, если это возможно, я новичок в этом, как я уже сказал, поэтому у меня нет кодачтобы дать вам хоть какое-то представление о том, на каком я уровне.

Если вы можете помочь, пожалуйста, оставьте ответ, я хотел бы получить столько же помощи, сколько я смогу получить.

Ответы [ 2 ]

4 голосов
/ 25 апреля 2011

То, как он отображается (openGL, swing / awt, все остальное), не связано с самой картой. Вот как это выглядит. Я использую специальный класс CoordinateMap, который я написал, но в основном это не более чем оболочка для Map<Point,MapTile>.

Как вы хотите, чтобы ваша карта имела большое влияние на то, что вы пытаетесь сделать здесь Я полагаю, что большинство алгоритмов будут использовать что-то вроде этого (предполагая прямоугольный):

for(int x = minx; x <= maxx; x++) {
    for(int y = miny; y <= maxy; y++) {
        map.put(new Point(x,y),generateRandomTile());
    }
}

Еще один вариант - распространение. Это работает так:

// pick 10 random points (10 is up to you)
MapTile[] seeds = new MapTile[10];
Point[] seedPoints = new Point[seeds.length];
for(int i = 0; i < seeds.length; i++) {
    seeds[i] = generateRandomTile();
    seedPoints[i] = generateRandomPoint();
}

int distance = 1;
while(true) {
    boolean changed = false;
    for(int i = 0; i < seedsPoints.length; i++) {
        Point p = seedPoints[i];
        for(int x = -distance; x <= distance; x++) {
            Point here = new Point(x,p.y));
            MapTile tile = tiles.get(here);
            if(tile == null) {
                 tiles.put(here,new Tile(seeds[i].terrainType));
                 changed = true;
            }
        }
        // that does the left edge of the square of distance away from
        // the center. I'll leave the other edges of the square for you since they're boilerplate
    } // end for seeds
    if(!changed) break;
    distance++;
}
2 голосов
/ 25 апреля 2011

Существует несколько способов создания игр на Java. Создание уровней на основе плиток также может быть выполнено несколькими способами. Возможно, вы захотите сделать поиск в Интернете по некоторым учебникам по созданию 2d java-игр и найти некоторые идеи о том, как это сделать.

Поскольку вы хотите использовать lwjgl, вам будет трудно создавать игры на основе 2D. Существуют и другие структуры, которые вы можете использовать, чтобы упростить это для вас, и ответы на этот вопрос подскажут вам некоторые.

Вот несколько ссылок, которые могут вдохновить вас на создание 2D-карт:

Вам также следует попробовать воспользоваться сайтом для разработки игр exchange . Они также могут помочь вам в программировании игры.

...