问题标签 [fen]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
60 浏览

javascript - 从数组中删除字符串,但在 Javascript 中添加数字量

我正在尝试为国际象棋创建一个 FEN 符号转换器。我已经决定解决这个问题的最佳方法是从字符串中删除我不需要的任何不必要的值。这是它的样子。

这些都是我的代码中的字符串。我已经找到了每个文件末尾的解决方案,它由/字符串中的 表示。但我的新问题是去掉数字值并添加回空白方块以覆盖它们。

当您在 FEN 中看到一个数字时,这实际上是国际象棋桌上有多少个空方格,直到另一个棋子。我的想法再次为自己简化,是将这些数字转换811111111一系列数字,代表每个必须为空的正方形。

虽然在实践中,我假设我只能退出并开始用 填充该索引splice,这似乎是可行的选择,但不幸的是,当将数字移动到不同的地方时会出现相当多的错误。81

有人会有更好的选择吗?是的,我知道已经有库可以做到这一点,但是如果你不尝试重新发明轮子,那么编码的乐趣是什么。

correctFen 函数 - 映射字符串以查找任何数字

在看了这个之后,它并没有真正删除我想要的索引,这可能是一个问题,它1在最后一个之后添加了 s/

0 投票
1 回答
250 浏览

python - Python 国际象棋数据 (FEN) 到 Stockfish for Python

我正在尝试使用 stockfish 来评估使用 FEN 符号的国际象棋位置,所有这些都在 Python 中。我主要使用两个库(我在 github 上找到的 pgnToFen:https ://github.com/SindreSvendby/pgnToFen和 Stockfish,MIT 在这里获得了许可:https ://github.com/zhelyabuzhsky/stockfish )。在许多错误之后,我遇到了一个又一个问题。Stockfish不仅无法分析这个FEN位置(3b2k1/1p3pp1/8/3pP1P1/pP3P2/P2pB3/6K1/8 b f3 -),而且它无限循环!“不用担心!” 并认为更改源代码是可以完成的。更改为 _put(),但基本上我无法放入虚拟值,因为一旦我给它这些值,stdin.flush() 就不会执行!这意味着我什至不认为我可以跳到数据框中的下一行。:( 我更改的代码如下。



最后但并非最不重要的更改为下面的init _ 构造函数:

下面是我要导入此代码的代码,这是弹出错误的地方。

因此,详细的问题是让 stockfish.get_evalution() 跳过,或者更好地解决问题,为此( 3b2k1/1p3pp1/8/3pP1P1/pP3P2/P2pB3/6K1/8 b f3 - )FEN 位置。我一直在研究这个问题很长一段时间,所以任何对此的见解都将非常感激。

我的规格是 Windows 10、Python 3.9、处理器:Intel(R) Core(TM) i9-10980XE CPU @ 3.00GHz 3.00 GHz,RAM 为 64.0 GB。

谢谢 :)

0 投票
1 回答
52 浏览

python - 如何从未嵌套的棋盘列表中取出 FEN

我制作了一个无法正常工作的国际象棋 Program.py;

我想从看起来像这样的板列表中生成 FEN

我建立的算法很糟糕,它只适用于开始的情况,就像显示的列表一样

对于最后一个,它会生成这个

rnbkqbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR/

但不是为此(例如 4 次移动后)它只会生成类似这样的东西

32/0/PP/2/

我想要一种算法,为最后一块板和任何其他板生成正确的 FEN,正确的将是

r1bqkb1r/ppp2ppp/2n2n2/3pp3/3PP3/PPP2PPP/R1BKQB1R/

... & 我想要python中的答案

0 投票
1 回答
27 浏览

javascript - 迭代 String.split() 的工作方式与我预期的不同

我正在编写一个简单的 javascript 代码来解析和验证用 Forsyth–Edwards Notation (FEN) 编写的国际象棋位置。

此符号中的默认国际象棋位置由下式给出,

const defaultFEN = "rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1";

有 6 个组件,我使用 String.split(" ") 按空格分割组件,现在我想进一步将结果数组的第一个元素用 "/" 分割,这将给出每个等级的状态。

运行这段代码给了我一个不直观的结果......

我预计输出是 8 个字符串,由“/”分隔,位于 defaultFEN 字符串的第一部分。相反,我得到了数字 0-7 打印出来。

有趣的是,如果我手动访问这个数组,console.log(locations.split("/")[i])对于区间 [0-7] 中的任何数字 i,我都会看到我想要的结果。

为什么在使用迭代循环时会打印出数字 0-7,但如果我使用基于普通索引的 for 循环,它会完全按预期工作?

0 投票
0 回答
11 浏览

png - 国际象棋图像生成器库导出质量差的png

我使用chess-image-generator图书馆来绘制棋子,但结果质量太差了

在此处输入图像描述