2D地图创建

时间:2011-04-25 06:58:51

标签: java 2d lwjgl

我是Map Creation和数组存储新手,想知道我是否可以在任务中获得一些帮助。我正在使用Java并使用LWJGL库,如果这有任何帮助的话。

我并不是想破坏任何其他游戏,所以它会与其他游戏不同。我基本上只需要不同的区域,如水,草和泥土。我最终会增加山脉,丘陵和攀登等。

我需要知道如何实现这一点,如果可以的话,我就像我说的那样是新手,所以我没有任何代码可以让你知道我的水平。< / p>

如果你能提供帮助,请留下答案,我会尽可能多地帮助你。

2 个答案:

答案 0 :(得分:4)

如何渲染(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++;
}

答案 1 :(得分:2)

有几种方法可以用Java创建游戏。创建基于图块的级别也可以通过多种方式完成。您可能想要在一些教程上进行互联网搜索,以创建2D游戏,并找到一些关于如何操作的想法。

由于你想使用lwjgl,你会发现很难做基于2D的游戏。您可以使用其他框架为您简化此操作,answers in this question会建议您使用。

以下是一些可能激发您制作二维地图的链接:

您还应该尝试使用game development stackexchange网站。他们也可以帮助您完成游戏编程工作。