我正在创建一个国际象棋游戏,现在我添加了棋子。所有作品都正确地进行了单独渲染,但是现在我试图将它们设置在它们的位置,它们没有出现在应有的位置。我的代码中什么导致片段生成错误?

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

    }

}

}


这就是它生成的样子:

java - 棋子不能正确渲染-LMLPHP

最佳答案

我的猜测是您的棋子是黑色的,而您的棋盘是黑色的,所以您看不到它们。

无关,但您使用的是HashMap来存储作品的坐标。这完全没有必要,我建议您使用Point。

关于java - 棋子不能正确渲染,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39341391/

10-09 19:23