0

嘿伙计们,所以我想到了一个想法,到目前为止我已经取得了一些进展。我希望能够根据坐标改变我的关卡地形。坐标是根据您单击的位置选择的,并添加到点的 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 回答