有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java将边界值分配给通过2D数组构造的棋盘

我正在为家庭作业制作一个国际象棋游戏,我在创建网格时遇到了一些问题。我四处寻找,但一直找不到我特别要找的东西

我已经成功地创建了我的棋盘和棋子,但是我需要用两个边框标记网格:一条水平线(a到H)和一条垂直线(8到1)。虽然我已经能够放置水平边界,但我无法使垂直边界与棋盘的适当行对齐。我会上传一张照片,但我现在有足够的声望点数。请让我知道这是否有帮助,我可以解决一些问题

正如您将在代码中看到的,我使用二维数组创建了网格,并通过枚举类分配了片段。我曾考虑在enum类中添加边界值,然后将它们放在分配棋子位置的循环中,但是我觉得这不是我的讲师想要的

如有任何建议,我们将不胜感激

public class VirtualChess {

public enum Chessmen{
    WHITE_KING, 
    WHITE_QUEEN, 
    WHITE_ROOK, 
    WHITE_BISHOP, 
    WHITE_KNIGHT,
    WHITE_PAWN, 
    BLACK_KING, 
    BLACK_QUEEN, 
    BLACK_ROOK, 
    BLACK_BISHOP, 
    BLACK_KNIGHT, 
    BLACK_PAWN, 
    EMPTY
}

public static void printBoard (Chessmen [] [] chessboard){ //A method to print out chessboard
    System.out.println("\tA\tB\tC\tD\tE\tF\tG\tH"); //This the horizontal border of the grid
    System.out.println("1\n2\n3\n4\n5\n6\n7\n8"); //This the vertical border of the grid. This is faulty.
    for(int i = 0; i < chessboard.length; i ++){ 
        for (int j = 0; j < chessboard.length; j ++){
            switch (chessboard [i] [j]){
            case WHITE_KING: System.out.print("\u2654" + "\t"); break; //This places the Unicode characters of the chess pieces
            case WHITE_QUEEN: System.out.print("\u2655"+ "\t"); break;
            case WHITE_ROOK: System.out.print("\u2656" + "\t"); break;
            case WHITE_BISHOP:  System.out.print("\u2657" + "\t"); break;
            case WHITE_KNIGHT: System.out.print("\u2658" + "\t"); break;
            case WHITE_PAWN: System.out.print("\u2659" + "\t"); break;
            case BLACK_KING: System.out.print("\u265A" + "\t"); break;
            case BLACK_QUEEN: System.out.print("\u265B" + "\t"); break;
            case BLACK_ROOK:  System.out.print("\u265C" + "\t"); break;
            case BLACK_BISHOP: System.out.print("\u265D" + "\t"); break;
            case BLACK_KNIGHT:  System.out.print("\u265E"+ "\t"); break;
            case BLACK_PAWN:  System.out.print("\u265F" + "\t"); break;
            default: System.out.print(" " + "\t"); break;         
            }
       }    

            System.out.println("");

    }
}

public static void main(String[] args) {

    Chessmen[][] chessboard = new Chessmen[8][8];

    for(int i = 0; i < 8; i ++){ //Making the 8 x 8 chessboard
        for (int j = 0; j < 8; j ++){
            if ( (i >= 2 && i <= 5) && (j <= 7)){
                chessboard [i] [j] = Chessmen.EMPTY;        //Assigning the chess pieces their starting positions
            } else {

            chessboard [0] [0] = Chessmen.BLACK_ROOK;
            chessboard [0] [7] = Chessmen.BLACK_ROOK;
            chessboard [7] [0] = Chessmen.WHITE_ROOK;
            chessboard [7] [7] = Chessmen.WHITE_ROOK;

            chessboard [0] [1] = Chessmen.BLACK_KNIGHT;
            chessboard [0] [6] = Chessmen.BLACK_KNIGHT;
            chessboard [7] [1] = Chessmen.WHITE_KNIGHT;
            chessboard [7] [6] = Chessmen.WHITE_KNIGHT;

            chessboard [0] [2] = Chessmen.BLACK_BISHOP;
            chessboard [0] [5] = Chessmen.BLACK_BISHOP;
            chessboard [7] [2] = Chessmen.WHITE_BISHOP;
            chessboard [7] [5] = Chessmen.WHITE_BISHOP;

            chessboard [0] [3] = Chessmen.BLACK_QUEEN;
            chessboard [7] [3] = Chessmen.WHITE_QUEEN;

            chessboard [0] [4] = Chessmen.BLACK_KING;
            chessboard [7] [4] = Chessmen.WHITE_KING;

            chessboard [1] [0] = Chessmen.BLACK_PAWN;
            chessboard [1] [1] = Chessmen.BLACK_PAWN;
            chessboard [1] [2] = Chessmen.BLACK_PAWN;
            chessboard [1] [3] = Chessmen.BLACK_PAWN;
            chessboard [1] [4] = Chessmen.BLACK_PAWN;
            chessboard [1] [5] = Chessmen.BLACK_PAWN;
            chessboard [1] [6] = Chessmen.BLACK_PAWN;
            chessboard [1] [7] = Chessmen.BLACK_PAWN;

            chessboard [6] [0] = Chessmen.WHITE_PAWN;
            chessboard [6] [1] = Chessmen.WHITE_PAWN;
            chessboard [6] [2] = Chessmen.WHITE_PAWN;
            chessboard [6] [3] = Chessmen.WHITE_PAWN;
            chessboard [6] [4] = Chessmen.WHITE_PAWN;
            chessboard [6] [5] = Chessmen.WHITE_PAWN;
            chessboard [6] [6] = Chessmen.WHITE_PAWN;
            chessboard [6] [7] = Chessmen.WHITE_PAWN;
            }
        }
    } 
    printBoard(chessboard);
}

}


共 (1) 个答案

  1. # 1 楼答案

    我也在做同样的工作,我发现标签的解决方案是:

        System.out.println("\tA\tB\tC\tD\tE\tF\tG\tH");
    
          for(int i = 0; i < chessboard.length; i ++){ 
    
                System.out.print((i+1) + "\t");
    
          for (int j = 0; j < chessboard[0].length; j ++){