问题标签 [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 投票
2 回答
4429 浏览

python - 从 Python 中的位置数组生成棋盘图?

我有一个数组,它对应于棋盘上棋子的位置,如下所示:

“b”和“w”表示黑白。

n:骑士
r:车
p:典当
b:主教
k:国王
q:王后

我想知道是否存在一些实用程序可以获取这个数组或类似的东西并生成棋盘的图片。存在许多使用 FEN 或 PGN 表示法的板生成器,但我无权访问它。我确实在谷歌上做了很多搜索,但我找不到任何东西。

谢谢!

0 投票
1 回答
382 浏览

javascript - 是否有可能采用 FEN aka forsyth-edward 符号并将其从黑色翻转以播放并赢得白色

假设我们有一个国际象棋分,而分是一个黑色的游戏和获胜问题。很多时候,国际象棋拼图网站都希望避免混淆,因为必须不断指示轮到谁下棋,所以他们宁愿把所有的拼图都设置为白色游戏和获胜或黑色游戏和获胜。在我有一个 1000 分的数组或分贝的情况或场景中,它的黑色可以玩并获胜,有没有一种方法可以通过一个函数或算法运行它,该函数或算法将吐出除白色之外完全相同的位置的分赢了?

我尝试设置编辑棋盘以使所有黑色棋子为白色棋子,白色棋子为黑色棋子,但遇到了棋盘颠倒且棋子仅向一个方向移动的问题。

先发分让黑方上场并获胜。

我想从跑步到达的分:

和期望的结果:

也许我可以使用正则表达式?看起来像第二个分(在这种情况下,不确定它是否在所有情况下都有效,只是另一个倒退了一些细微的变化?)`

0 投票
0 回答
56 浏览

c++ - ifstream 似乎没有打开外部 exe 进行读写

我是一个初学者爱好程序员。

我正在开发一个小程序,该程序将从用户那里获取任何国际象棋位置的 FEN 字符串,将其传递到 Stockfish 国际象棋引擎,并在它完成了寻找移动的魔力后从 exe 中获取移动输出。

问题是,一旦我将 FEN 字符串输入到我编译的程序中,命令行窗口仍然是静态的,并且什么也不输出。当我按下回车键时,只会出现新行,当我输入除空格以外的任何内容时,命令行窗口会关闭。

我尝试打开任务管理器检查输入 FEN 字符串后 Stockfish 是否正在运行,但我在任何地方都找不到它,这一定意味着我的程序一开始就没有打开 Stockfish。

以下代码已经在Windows中使用g++顺利编译,没有发现任何错误信息。

在网上做了一些研究后,我尝试将“Stockfish.exe”更改为“C:....(路径)..\Stockfish.exe”无济于事(也有大量编译错误)。

我错过了什么吗?我必须做什么才能让程序真正打开 Stockfish 并输入 FEN 和 UCI 命令?

非常感谢!

^_^

0 投票
1 回答
135 浏览

php - 如果下一个条目是整数,则在数组中应用 PHP 函数(连接一个有效的 FEN 字符串)

试图建立一个有效的FEN 字符串

给定这个 8*8 数组示例,表示棋盘,(“1”是空方格):

在现场,这是位置:

在此处输入图像描述

我正在寻找的有效结果是:

现在我的输出是:

显然,数组中的任何整数条目都应该与下一个条目相加,只有当下一个条目是整数时,才应该丢弃下一个条目直到结束

通过迭代数组,我不确定如何以简单的方式在这里应用array_walk()array_map() 之类的东西。也许一个简单的字符串操作就足够了?

有什么见解吗?

在线示例: https ://3v4l.org/tuqqo

0 投票
1 回答
1196 浏览

chess - 如何分析Stockfish中的位置得分

我有一个FEN位置,我想分析一下哪个位置更强。比如我有这个职位

如何使用Stockfish评估职位并获得分值?(例如,白色分数为+9或黑色-5)

0 投票
0 回答
173 浏览

python - 国际象棋机器人因黑棋走错

我正在使用 stockfish 作为移动计算器和 tensorflow-chessbot,从游戏中获得 FEN。它正在为白色正确移动,但对于黑色它失败了。我正在研究这段代码,但看不到它为什么可以这样做。它使垃圾像黑色一样移动。例如 - 白做 e4 后,引擎显示 - e8c6,这是不合法的举动

0 投票
2 回答
166 浏览

java - 如何在java中修改一个fen字符串?

所以我有这个字符串StringBuilder fenToString = new StringBuilder("1P111Pr1")

现在我怎么能把它改成a = "1P3Pr1"

我试过这个

我得到"1P123Pr1"而不是"1P3Pr1"

0 投票
0 回答
81 浏览

chess - 有没有办法在 Stockfish 中查看失误、错误、错过的将死

我正在使用Stockfish,当我分析游戏时,stockfish 只显示最佳动作和位置价值。是否可以显示失误、错误和可能的将死?

例如,我有这个pgn职位

在此处输入图像描述

鲶鱼计算结果

Stockfish 表明,最强的移动是 bishop c8e6

我想达到什么目标?

现在我想强调可能的最强动作和错误。例如,由于mate , g7pawn 将突出显示为错误(如果用户 playg7 - g6或)g7 - g5Nf6

在此处输入图像描述

0 投票
1 回答
177 浏览

python - 我如何通过比较两个不同的分界来获得所玩的动作?

所以我有两个分。一个在搬家之前,一个在搬家之后。我怎样才能通过将这 2 个 fens 相互比较并以 uci 或任何其他格式返回答案来获得所播放的动作。我正在使用 python-chess 库,所以也许有一种方法可以通过比较两个不同的棋盘对象来获得下棋动作?

0 投票
1 回答
31 浏览

r - R中gsub序列的累积应用

我正在做一个处理国际象棋游戏的项目。在对数据进行一些处理后,我需要获取特定位置的 FEN( https://en.wikipedia.org/wiki/Forsyth%E2%80%93Edwards_Notation )符号。我已经为每个 FEN 编码编写了代码,但是我很难对代表未占用的连续方块数的字符进行编码。

以以下 FEN 代码为例:

每个 1 代表棋盘内的一个空方格。因此,例如:11111111告诉我们棋盘内的这一行没有被棋子占据。

问题是,使用 FEN 作为输入来绘制棋盘的 R 包不喜欢这种表示法,他们想要更活跃的原始表示法,其中所有1s 都由一个字符表示:所有这些连续1s 的总和。对于前面的示例,这将是:

请注意,例如,11111111序列被替换为8,所有连续1s的总和

我已经尝试使用mapplywithgsub来完成替换,但它一次迭代一个应用模式替换对的字符串。结果如下:

代码:

结果:

正如您所看到的,它一次进行一个替换,并且对于下一个模式替换对,它从原始字符串开始,它不会按照我在模式中指定的顺序累积它们 - 替换向量。

我已经尝试过这里这里描述的策略,但它们也没有奏效。正如在最后一个链接中提到的那样,我试图不惜一切代价避免循环 gsubs 来完成工作,因为它似乎效率很低。

关于如何进行的任何想法?

谢谢!