Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/382.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 棋子渲染不正确_Java_Chess - Fatal编程技术网

Java 棋子渲染不正确

Java 棋子渲染不正确,java,chess,Java,Chess,我正在创建一个国际象棋游戏,现在我正在添加棋子。所有的作品都已正确地单独渲染,但现在我正试图将它们设置在它们应该出现的位置。在我的代码中,是什么导致片段生成错误 public class Tile { Graphics g; public static HashMap<HashMap<Integer, Integer>, String> pieces = new HashMap<>(); public Tile(Graphics g) { thi

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

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

    }

}

}
公共类平铺{
图形g;
公共静态HashMap片段=新HashMap();
公共瓷砖(图形g){
这个.g=g;
}
公共静态void setPieceLoc(整数x、整数y、字符串平铺){
x=(x*64)+20;
y=(y*64)+20;
HashMap tileNum=新HashMap();
tileNum.put(x,y);
块。放置(瓷砖、瓷砖);
}
公共空白勾号(){
注册表项();
}
私有静态无效注册表项(){
//典当
对于(int x=0;x<8;x++){
setPieceLoc(x,1,“典当”);
setPieceLoc(x,6,“典当”);
}
对于(int y=0;y<1;y++){
int-cy=y*7;
setPieceLoc(0,cy,rook);
setPieceLoc(1,cy,“骑士”);
setPieceLoc(2,cy,“主教”);
setPieceLoc(5,cy,“主教”);
setPieceLoc(6,cy,“骑士”);
setPieceLoc(7,cy,“rook”);
}
setPieceLoc(3,0,“女王”);
setPieceLoc(4,0,“国王”);
setPieceLoc(3,0,“女王”);
setPieceLoc(4,7,“国王”);
}
公共空间渲染(图形g){
for(HashMap平铺:pieces.keySet()){
int x=0;
int y=0;
对于(整数xy:tile.keySet()){
x=xy;
y=平铺获取(xy);
}
字符串片段名称=片段.get(平铺);
g、 drawImage(ChessImages.getPieceImage(piecesName),x,y,null);
}
}
}
下面是它生成的外观:


我猜你的棋子是黑色的,而你的棋盘是黑色的,所以你看不见它们


不相关,但您正在使用HashMap来存储片段的坐标。这是完全没有必要的,我建议您使用一个点。

它们的外观是什么样的。底部有一个图像链接。它应该是这样的。我在问你得到了什么。我的道歉我的意思是,这就是现在的情况。它应该像一个普通的棋盘一样生成。我现在只使用白色棋子,所以不能得到它。我也完全忘记了这一点。记住这一点会很有用,但我现在添加了它。你能发布你的白色作品的截图吗?你确定你的白色作品实际上是白色的,不是透明的吗?它们只在黑色的方块上是看不见的,这一点非常突出。把它们画在红色的背景上。这个截图并不能证明这些碎片是白色的,因为它们可能是透明的,只是显示背景(白色)。@TheGamerPlayz很棒。如果这个答案解决了你的问题,别忘了接受它。