1

私は最初のゲームを開発しようとしています。マップから抽出したタイルの読み込みに重大な問題があります。最初のタイルを表示するだけで、これまでにコーディングしたものは次のとおりです。

public class TileMap {

    //FIELDS
    public int Tilemapx;
    public int Tilemapy;
    private int nRows = 8;
    private int nColumns = 8;
    public int TileWidth = Panel.WIDTH / nColumns;
    public int TileHeight = Panel.HEIGHT / nRows;
    public BufferedImage EntireMap;
    public BufferedImage SingleTile;

    public TileMap (){
        String EntireMappath = "res/Tiles.png";
        try {
            EntireMap = ImageIO.read(new File (EntireMappath));
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

    public void drawTile (){
        for (int Tilemapx = 0; Tilemapx < Panel.WIDTH / nColumns; Tilemapx++){
            for (int Tilemapy = 0; Tilemapy < Pannel.HEIGHT / nRows; Tilemapy++){
                BufferedImage SingleTile = EntireMap.getSubimage(100, 100, Tilemapx, Tilemapy);

            }
        }
    }
}

Panel クラスでは、タイルを描画しようとしていますが、何も表示されません (最初の 2 つの画像は意図したとおりに機能します)。

public void draw() {
    BufferStrategy bs = getBufferStrategy();
    if (bs == null) {
        createBufferStrategy(3);
        return;
    }

    Graphics g = bs.getDrawGraphics();
    g.drawImage(bg, 0, 0, getWidth(), getHeight(), null);
    g.drawImage(heroImg1, hero.cordX, hero.cordY, hero.diameter, hero.diameter, null);
    g.drawImage(tiles.SingleTile, 100, 200, tiles.Tilemapx, tiles.Tilemapx, null);
    g.dispose();
    bs.show();
}
4

2 に答える 2

0
public void drawTile (){

// THIS IMAGE SingleTile SHOULD BE GLOBAL AND THIS IMAGE SHOULD BE RETURNED GLOBAL FROM A METHOD

BufferedImage SingleTile = EntireMap.getSubimage(100, 100, Tilemapx, Tilemapy);


// get the graphics context from what you want to paint onto
Graphics ga = OTHERIMAGE_OR_BUFFERSTRATEGY_OR_PANEL.getGraphics(); //or getDrawGraphics() for bufferstrategy

//then draw on it ga.drawImge(....................


}//END METHOD
于 2013-07-25T13:44:27.750 に答える
0

TileMap特定のタイルの適切なサブ画像を返すメソッドを提供する必要があります。次に、 でdrawそのメソッドを呼び出して、イメージを取得し、グラフィックスに描画できます。ボード全体を描きたい場合は、単純にループを使用します。

于 2013-07-25T12:03:46.670 に答える