将边框值分配给通过2D阵列构造的棋盘

时间:2013-10-11 16:05:16

标签: java arrays enums grid

我正在为家庭作业创建一个国际象棋游戏,我在创建网格方面遇到了一些问题。我一直在寻找,但一直无法找到我特别想要的东西。

我已经成功创建了我的棋盘和棋子,但是我需要用两个边框标记网格:水平文本行(A到H)和垂直行(8到1)。虽然我已经能够放置水平边框,但我无法让垂直边框与棋盘的相应行对齐。我会上传一张照片,但我目前还有足够的声望点。如果这会有所帮助,请告诉我,我可以解决一些问题。

正如您将在代码中看到的那样,我使用2D数组创建了网格,并通过枚举类分配了这些部分。我正在考虑在枚举类中添加边框的值,然后将它们放在将棋子分配给它们的位置的循环中,但是我不认为这是我的讲师的意图。

非常感谢任何建议或建议。

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 个答案:

答案 0 :(得分:0)

我正在做同样的任务,我发现的标签解决方案是:

    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 ++){ 
相关问题