2

私はマップの作成と配列の保存に慣れていないので、このタスクで支援が得られるかどうか疑問に思っていました。私は Java で作業しており、LWJGL ライブラリを使用しています。

他のゲームをパクリしようとしているわけではないので、他のゲームとは違うものになるでしょう。基本的に、水、草、土など、さまざまな領域が必要です。最終的には山や丘、登山などを追加します。

これがどのように達成できるかを知る必要があります。可能であれば、私が言ったように初めてなので、私がどのレベルにいるのかを理解するためのコードはありません。

あなたが助けることができるなら、答えを残してください。

4

2 に答える 2

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());
    }
}

できるもう 1 つのオプションは、拡散です。それはこのように動作します:

// 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++;
}
于 2011-04-25T07:30:12.200 に答える
2

Java でゲームを作成するには、いくつかの方法があります。タイル ベースのレベルを作成する方法もいくつかあります。2D Java ゲームを作成するためのチュートリアルをインターネットで検索して、その方法に関するアイデアを見つけてください。

lwjgl を使いたいので、2d ベースのゲームを行うのは難しいでしょう。これを簡素化するために使用できる他のフレームワークがあり、この質問の回答はいくつかを示唆しています。

2D マップを作成するためのヒントとなるリンクを次に示します。

また、ゲーム開発用スタック交換サイトも使用してみてください。ゲームのプログラミング作業にも役立つかもしれません。

于 2011-04-25T07:25:29.743 に答える