Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何生成FEN字符串并将其发送给Stockfish?_Java_String_Chess_Uci_Fen - Fatal编程技术网

Java 如何生成FEN字符串并将其发送给Stockfish?

Java 如何生成FEN字符串并将其发送给Stockfish?,java,string,chess,uci,fen,Java,String,Chess,Uci,Fen,我正在构建一个象棋GUI,它应该与Stockfish对话。我听说我必须生成一个FEN字符串,来告诉Stockfish已经做出的移动。所以问题是,我该怎么做?我在这里真的遇到了死胡同。。我正在使用EclipseIDE 我不确定您做了什么或使用了什么编程语言,但由于您使用的是EclipseIDE,我建议您使用Java 让Stockfish发挥作用的一个热门技巧是观看以下视频: 视频中链接的堆栈溢出: 因此,为了解决您的问题: 所以问题是,我该怎么做 好的,简单的解决方案是寻找已经实施的项目。我知道

我正在构建一个象棋GUI,它应该与Stockfish对话。我听说我必须生成一个FEN字符串,来告诉Stockfish已经做出的移动。所以问题是,我该怎么做?我在这里真的遇到了死胡同。。我正在使用EclipseIDE

我不确定您做了什么或使用了什么编程语言,但由于您使用的是EclipseIDE,我建议您使用Java

让Stockfish发挥作用的一个热门技巧是观看以下视频:

视频中链接的堆栈溢出:

因此,为了解决您的问题:

所以问题是,我该怎么做

好的,简单的解决方案是寻找已经实施的项目。我知道有很多。如果您想要一种简单而笨拙的Java字符串制作方法,我为您制作了如下:

注意:此实现认为您的整个电路板都在一个字符串中[][](我没有在这么晚的时间制造更高级的麻烦)

注2:它不会构成整个FEN字符串。它缺少了活动颜色、Castle可用性、中途、半移动时钟和全移动号码,但我相信您将能够轻松实现这一点

输出:

rnbqkbnr/PPPP/8/8/8/PPPP/rnbqkbnr

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;
}