我正在读取一个文本文件并将其内容保存到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);
}
答案 0 :(得分:0)
您应该阅读有关FEN Notation
的信息您可以使用pgn表示法导入位置
它看起来像这样
rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1
然后,您可以一次从左至右读取此字符串,每次填充一个字符即可。
小写字母=黑色字母
大写字母=白色字母
/表示下一行
number =从A列到下一块的空方块的数量
w表示移动为白色
KQkq意味着双方都可以城堡王朝和皇后城堡
0 1表示当前是白人的第一步