1

我正在 2d 中创建一个非常简单的 Java Slick 游戏。我可以在扩展 BasicGameState 的类中使用渲染器方法,但我想使用 DarwMap 类渲染到我的游戏容器中。

这是我的游戏源代码和不工作的 DrawMap 类:

public class GamePlay extends BasicGameState{

    DrawMap map;

    public GamePlay(int state){

    }

    @Override
    public void init(GameContainer arg0, StateBasedGame arg1) throws SlickException {
        // TODO Auto-generated method stub      
    }

    @Override
    public void render(GameContainer gc, StateBasedGame sbg, Graphics g) throws SlickException {
        map.render();
    }

    @Override
    public void update(GameContainer arg0, StateBasedGame arg1, int arg2) throws SlickException {
        // TODO Auto-generated method stub

    }

    @Override
    public int getID() {
        // TODO Auto-generated method stub
        return 1;
    }
}

和下一节课

public class DrawMap {

    //size of the map
    int x,y;
    //size of the tile
    int size;

    //tile
    Image tile;

    //creator
    public DrawMap(GameContainer gc, int x, int y, int size){
         this.x = x;
         this.y = y;
         this.size = size;
    }

    public void render() throws SlickException{

         tile = new Image("res/Tile.png");

         for(int i=0; i<(y/size); i++){
             for(int j=0; j < (x/size); j++){
                 tile.draw(j*size, i*size, 2);
            }
         }
    }

}

我知道这是错误的,但是如果有人可以帮助我解决这个问题并使用 DrawMap 类解决我的绘图问题。

4

1 回答 1

1

我在您的构造函数中看不到它,但我假设您正在map那里创建实例。

现在,要在屏幕上绘图(这通常对 Slick 和 Java2D 有效),您需要一个Graphics表示图形上下文的对象,它是管理将数据放入屏幕的对象。对于 Slick2D,您可以GameContainer通过调用它的getGraphics方法来获取图形。然后,您可以在刚刚获得的对象上调用该drawImage方法将图像绘制到屏幕上。Graphics

这是一个示例,将图形上下文作为DrawMap'render方法的参数传递:

public class GamePlay extends BasicGameState{

    DrawMap map;    
    ...

    @Override
    public void render(GameContainer gc, StateBasedGame sbg, Graphics g) throws SlickException {
        map.render(gc.getGraphics());
    }
    ...
}

还有DrawMap班级...

public class DrawMap {

    Image tile;
    ...        

    public void render(Graphics g) throws SlickException {
    // your logic to draw in the image goes here

        // then we draw the image. The second and third parameter
        // arte the coordinates where to draw the image
        g.drawImage(this.tile, 0, 0);
    }   
}

当然,您可以继续直接绘制到Graphics对象中。

于 2013-02-05T01:10:13.020 回答