0

私は現在 Java を学んでおり、Swing GUI で遊んでいるだけでなく、いくつかのより大きなローグライク ダンジョン ビルダー アルゴリズムがどのように機能するかを理解しようとしています。

アルゴリズムのJavaでこの例に出くわしました-

[リンク] http://roguebasin.roguelikedevelopment.org/index.php?title=Java_Example_of_Dungeon-Building_Algorithm

そして、このコードを変更して、画像タイルを Swing JFrame に表示することに興味がありました -

//used to print the map on the screen
public void showDungeon(){
    for (int y = 0; y < ysize; y++){
        for (int x = 0; x < xsize; x++){
            //System.out.print(getCell(x, y));
            switch(getCell(x, y)){
            case tileUnused:
                System.out.print(" ");
                break;
            case tileDirtWall:
                System.out.print("+");
                break;
            case tileDirtFloor:
                System.out.print(".");
                break;
            case tileStoneWall:
                System.out.print("O");
                break;
            case tileCorridor:
                System.out.print("#");
                break;
            case tileDoor:
                System.out.print("D");
                break;
            case tileUpStairs:
                System.out.print("<");
                break;
            case tileDownStairs:
                System.out.print(">");
                break;
            case tileChest:
                System.out.print("*");
                break;
            };
        }
        if (xsize <= xmax) System.out.println();
    }
}

JFrameで新しいグリッドを作成することで、これを達成するための最良の方法は何だろうと思っていましたか? 誰かがサンプルコードを提供できますか?

ありがとう。

4

2 に答える 2

0

画面上にキャラクターを表示したい限り、ダンジョン マップで 1 つのテキスト領域を埋めることもできます。または、マップを System.out に書き込みます。

画像を表示し始めた瞬間が、Swing が便利になる瞬間です。

Room オブジェクトの double 配列を持つクラス Map など、いくつかの追加クラスを恥ずかしがらずに配置してください。Room は具体的なサブクラス DirtWall、StoneFloor などを持つ抽象クラスです。

そして、JFrame の GridLayout を ImageIcons で埋める MapView。

または、ローグライク インターフェイスに固執したい場合は、curses ライブラリを見てください。これは、ターミナル ウィンドウに文字を配置する方法です。Java から JNI バインディングを作成できます。またはhttp://www.pitman.co.za/projects/charva/があり、そのようなバインディングの上にスイングのような API を作成します。

于 2013-10-21T13:18:00.400 に答える