将ArrayList的元素添加到二维数组中

时间:2020-01-28 19:23:28

标签: arrays chess

我正在读取一个文本文件并将其内容保存到ArrayList中,因为我想用Arraylist的内容填充8x8数组。我的目标是读取带有棋子,颜色和位置的文件,然后检查有效的棋步。但是,我是Java新手,不确定如何检查arrayList的这些属性,即它是白色还是黑色。

感谢您的帮助。


public static void MoveCheck(String answer,ArrayList<String> board){
        String move; 
        if(answer.equalsIgnoreCase("pawn")){
            System.out.println("What position do you want to move to?");
            Scanner scanner = new Scanner(System.in);
            move = scanner.nextLine();
            if(board.contains("white")){ 
                if(move.equalsIgnoreCase("B3")||(move.equalsIgnoreCase("B4"))){
                    System.out.println("Valid move");
                }
                else{
                    System.out.println("Invalid move/Not on the board");
                }
            }
        }

public static void main(String args[]){

        String answer;
        ArrayList<String> result = new ArrayList<>();
        int [][] board = new int[7][7];
        try (BufferedReader br = new BufferedReader(new FileReader("chess.txt"))){
            while(br.ready()){
                result.add(br.readLine());
            }
        }   catch (Exception e){
            System.out.print("Error occurred while reading.");
        }

       for (String line : result){
            System.out.println(line);
       }

        System.out.println("Select a piece to move");
        Scanner scanner = new Scanner(System.in);
        answer = scanner.nextLine();

        MoveCheck(answer,result);

    }

1 个答案:

答案 0 :(得分:0)

您应该阅读有关FEN Notation

的信息

您可以使用pgn表示法导入位置

它看起来像这样

rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1

然后,您可以一次从左至右读取此字符串,每次填充一个字符即可。

小写字母=黑色字母

大写字母=白色字母

/表示下一行

number =从A列到下一块的空方块的数量

w表示移动为白色

KQkq意味​​着双方都可以城堡王朝和皇后城堡

0 1表示当前是白人的第一步