Java 如何生成FEN字符串并将其发送给Stockfish?
我正在构建一个象棋GUI,它应该与Stockfish对话。我听说我必须生成一个FEN字符串,来告诉Stockfish已经做出的移动。所以问题是,我该怎么做?我在这里真的遇到了死胡同。。我正在使用EclipseIDE 我不确定您做了什么或使用了什么编程语言,但由于您使用的是EclipseIDE,我建议您使用Java 让Stockfish发挥作用的一个热门技巧是观看以下视频: 视频中链接的堆栈溢出: 因此,为了解决您的问题: 所以问题是,我该怎么做 好的,简单的解决方案是寻找已经实施的项目。我知道有很多。如果您想要一种简单而笨拙的Java字符串制作方法,我为您制作了如下: 注意:此实现认为您的整个电路板都在一个字符串中[][](我没有在这么晚的时间制造更高级的麻烦) 注2:它不会构成整个FEN字符串。它缺少了活动颜色、Castle可用性、中途、半移动时钟和全移动号码,但我相信您将能够轻松实现这一点 输出: rnbqkbnr/PPPP/8/8/8/PPPP/rnbqkbnrJava 如何生成FEN字符串并将其发送给Stockfish?,java,string,chess,uci,fen,Java,String,Chess,Uci,Fen,我正在构建一个象棋GUI,它应该与Stockfish对话。我听说我必须生成一个FEN字符串,来告诉Stockfish已经做出的移动。所以问题是,我该怎么做?我在这里真的遇到了死胡同。。我正在使用EclipseIDE 我不确定您做了什么或使用了什么编程语言,但由于您使用的是EclipseIDE,我建议您使用Java 让Stockfish发挥作用的一个热门技巧是观看以下视频: 视频中链接的堆栈溢出: 因此,为了解决您的问题: 所以问题是,我该怎么做 好的,简单的解决方案是寻找已经实施的项目。我知道
private final String RANK_SEPARATOR=“/”;
专用字符串[][]板={
{“r”、“n”、“b”、“q”、“k”、“b”、“n”、“r”},
{“p”,“p”,“p”,“p”,“p”,“p”,“p”,“p”,“p”,“p”,“p”},
{"","","","","","","",""},
{"","","","","","","",""},
{"","","","","","","",""},
{"","","","","","","",""},
{“P”,“P”,“P”,“P”,“P”,“P”,“P”,“P”,“P”,“P”,“P”},
{“R”、“N”、“B”、“Q”、“K”、“B”、“N”、“R”}
};
公共字符串translateBoardToFEN(字符串[][]板){
字符串fen=“”;
for(int-rank=0;rank
我不想重复我的答案。请查看我发布的内容:
private final String RANK_SEPARATOR = "/";
private String[][] board = {
{"r","n","b","q","k","b","n","r"},
{"p","p","p","p","p","p","p","p"},
{"","","","","","","",""},
{"","","","","","","",""},
{"","","","","","","",""},
{"","","","","","","",""},
{"P","P","P","P","P","P","P","P"},
{"R","N","B","Q","K","B","N","R"}
};
public String translateBoardToFEN(String[][] board) {
String fen = "";
for (int rank = 0; rank < board.length; rank++) {
// count empty fields
int empty = 0;
// empty string for each rank
String rankFen = "";
for (int file = 0; file < board[rank].length; file++) {
if(board[rank][file].length() == 0) {
empty++;
} else {
// add the number to the fen if not zero.
if (empty != 0) rankFen += empty;
// add the letter to the fen
rankFen += board[rank][file];
// reset the empty
empty = 0;
}
}
// add the number to the fen if not zero.
if (empty != 0) rankFen += empty;
// add the rank to the fen
fen += rankFen;
// add rank separator. If last then add a space
if (!(rank == board.length-1)) {
fen += RANK_SEPARATOR;
} else {
fen += " ";
}
}
return fen;
}