2016-09-06 118 views
2

我正在创建一个国际象棋游戏,现在我正在添加棋子。所有作品都单独呈现,但现在我试图将它们放置在它们的位置,但它们并未出现在应该出现的位置。什么在我的代码导致片断产生错误?棋子不能正确渲染

public class Tile { 

Graphics g; 

public static HashMap<HashMap<Integer, Integer>, String> pieces = new HashMap<>(); 

public Tile(Graphics g) { 
    this.g = g; 
} 

public static void setPieceLoc(int x, int y, String tile) { 

    x = (x*64) + 20; 
    y = (y*64) + 20; 
    HashMap<Integer, Integer> tileNum = new HashMap<>(); 
    tileNum.put(x, y); 
    pieces.put(tileNum, tile); 
} 

public void tick() { 
    registerPieces(); 
} 

private static void registerPieces() { 

    //Pawns 
    for(int x = 0; x < 8; x++) { 

     setPieceLoc(x, 1, "pawn"); 
     setPieceLoc(x, 6, "pawn"); 
    } 

    for(int y = 0; y < 1; y++) { 
     int cy = y*7; 
     setPieceLoc(0, cy, "rook"); 
     setPieceLoc(1, cy, "knight"); 
     setPieceLoc(2, cy, "bishop"); 
     setPieceLoc(5, cy, "bishop"); 
     setPieceLoc(6, cy, "knight"); 
     setPieceLoc(7, cy, "rook"); 
    } 

    setPieceLoc(3, 0, "queen"); 
    setPieceLoc(4, 0, "king"); 
    setPieceLoc(3, 0, "queen"); 
    setPieceLoc(4, 7, "king"); 

} 

public void render(Graphics g) { 
    for(HashMap<Integer, Integer> tile : pieces.keySet()) { 
     int x = 0; 
     int y = 0; 
     for(Integer xy : tile.keySet()) { 
      x = xy; 
      y = tile.get(xy); 
     } 

     String piecesName = pieces.get(tile); 

     g.drawImage(ChessImages.getPieceImage(piecesName), x, y, null); 

    } 

} 

} 

这里是它产生的样子:

enter image description here

+0

他们是什么样子出现。 – Kelvin

+0

底部有一个图像链接。 – TheGamerPlayz

+0

这就是它应该**的样子。我在问你在收到什么。 – Kelvin

回答

3

我的猜测是你的作品是黑色的,和你的板是黑色的,所以你不能看到他们。

不相关,但是您使用HashMap来存储碎片的坐标。这是完全不必要的,我会建议你使用一个Point。

+0

我现在只用白色的棋子,所以不能成功。我也完全忘了Point。记住这一点很有用,但我现在添加了它。 – TheGamerPlayz

+0

你可以发布你的白色碎片的截图吗? – Kelvin

+1

你确定你的白色作品实际上是白色的而不是透明的吗?真正突出的是,它们只是在黑色方格中隐形。 –