2013-07-25 48 views
2

我正在嘗試開發我的第一款遊戲。加載從地圖提取的Tiles存在嚴重問題。 這是我迄今編寫的代碼,只是願意顯示第一個圖塊。從瓷磚地圖中加載子圖像

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); 

      } 
     } 
    } 
} 

,並在面板類,我想提請瓦,但似乎沒有什麼(前兩個圖像工作打算)

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(); 
} 
+0

在'TileMap.drawTile()',你聲明的局部變量'SingleTile'並指派副圖像給它。你沒有分配到「SingleTile」字段。 – johnchen902

+0

爲了儘快提供更好的幫助,請發佈[SSCCE](http://sscce.org/)。熱鏈接到圖像或在代碼中生成一個。 –

回答

0

你應該TileMap提供方法爲給定的圖塊返回適當的子圖像。然後,在draw中,您可以調用該方法,獲取圖像並在圖形上繪製它。如果你想繪製整個電路板,只需使用一個循環。

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