0

こんにちは、私はアイデアを思いついたので、これまでにいくつかの進歩を遂げました。座標に基づいてレベルの地形を変更できるようにしたいと考えています。座標は、クリックした場所に基づいて選択され、Points の ArrayList に追加されます。これらのポイントは、x 値で並べ替えられ、次のように描画されます。

public Image renderTerrain() throws SlickException {

    Image image = new Image(MAP_WIDTH, MAP_HEIGHT);

    Graphics gr = image.getGraphics();

    int startx = 0;
    int starty = 0;

    for(Point point : points) {

        starty = (int) point.getY();

        int tox = (int) point.getX();
        int toy = (int) point.getY();


        for(int x = startx; x < tox; x++) {
            for(int y = starty; y < MAP_HEIGHT; y++) {
                gr.drawLine(x,y,x,y);
            }
        }

        startx = tox;

    }

    gr.flush();

    return image;
}

これは次のようになります。

ここに画像の説明を入力

しかし、私が達成したいことはそうです。

ここに画像の説明を入力

これを実現するには、どのような変更を加える必要がありますか?

ありがとう。

4

1 に答える 1

0

答えを待っている間、私は自分の質問に答えました。

これが私の解決策です:

public Image renderTerrain() throws SlickException {

    Image image = new Image(MAP_WIDTH, MAP_HEIGHT);

    Graphics gr = image.getGraphics();

    int startx = 0;
    int starty = (int)points.get(0).getY();

    for(Point point : points) {


        int tox = (int) point.getX();
        int toy = (int) point.getY();

        gr.setColor(Color.pink);//line
        gr.drawLine(startx,starty,tox,toy);
        gr.setColor(Color.green); //height
        gr.drawLine(tox, toy, tox, MAP_HEIGHT);
        gr.setColor(Color.yellow); //base
        gr.drawLine(tox, MAP_HEIGHT-1, startx, MAP_HEIGHT-1);
        gr.drawLine(tox, MAP_HEIGHT-2, startx, MAP_HEIGHT-2);

        startx = tox;
        starty = toy;
    }

    gr.flush();

    return image;
}

結果:

ここに画像の説明を入力

于 2013-10-01T07:49:48.573 に答える