Добавить элементы ArrayList в 2d Array - PullRequest
0 голосов
/ 28 января 2020

Я читаю текстовый файл и сохраняю его содержимое в ArrayList, знаю, что хочу заполнить массив 8x8 содержимым Arraylist. Моя цель - прочитать файл с шахматными фигурами, цветом и позицией, а затем проверить правильность ходов. Тем не менее, я новичок в java и не знаю, как проверить массивList для этих атрибутов, ie., Если это белый или черный кусок.

Любая помощь приветствуется.


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 голосов
/ 28 января 2020

Вы должны прочитать о Запись FEN

Вы можете импортировать позицию с помощью записи pgn

это будет выглядеть примерно так

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

Тогда вы могли бы просто читать эту строку слева направо по одному символу за раз, чтобы иметь возможность заполнять вашу доску.

Маленькая буква в клетке = черная фигура

Буква в прописной букве = белая фигура

/ означает следующий ряд

число = количество пустых квадратов от столбца A до следующего фрагмента

w означает, что для перемещения белый *

KQkq означает обе стороны могут блокировать как королевскую, так и королевскую стороны

0 1 означает, что в настоящее время это первый ход белых

...