问题标签 [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 回答
832 浏览

emacs - org模式:描述一个棋位,自动生成棋盘图像

我写关于国际象棋的文章。我经常需要使用名为 FEN 的标准格式来描述国际象棋的位置,并希望它能够自动转换为 png 图像,并且当我将 org 文档导出为 LaTeX 或 html 时,要内联的图像。我认为这是可以做到的,因为 ditaa 似乎也有类似的工作方式。

例如,使用 FEN 字符串“8/pppr1kpp/8/8/8/5P2/PPP1RKPP/8 w - - 0 1”作为输入,我创建了一个名为 chessboard.tex 的 tex 文件:

其中,使用 shell 命令 $> xelatex --shell-escape chessboard.tex 生成以下 png 图像(由于使用了独立包)。 在此处输入图像描述

我怎样才能自动化这个过程,这样我就可以在一个组织文件中放入类似的东西

上述过程是否自动化?

0 投票
1 回答
205 浏览

java - DGT eboard 的 RabbitPlugin 不显示完整的 FEN 符号

以前有没有人为 DGT 电子板使用过 RabbitPlugin DLL?我能够从棋盘上检测到移动的棋子,它给了我一个 FEN 字符串,但它没有给出完整的 FEN 符号(请参见下文)。任何人都可以提供有关如何获得此处描述的完整符号的帮助wiki谢谢

0 投票
1 回答
351 浏览

node.js - 比较两个 FEN 字符串以防止在国际象棋中出现不可能的位置

我用 chessboard.js 实现了一个棋盘,当位置改变时,FEN 字符串使用 socket.io 发送到我的 node.js 服务器

问题是,我如何防止非法移动,或者我如何在每一个移动情况下找到 FEN 是可能的?

0 投票
4 回答
3745 浏览

node.js - 将 PGN 转换为 nodejs 中的 FEN 字符串列表(国际象棋符号)

我正在使用 nodejs 构建一个与国际象棋相关的应用程序。我一直在尝试chess.js尽可能多地使用,但我认为我在功能方面遇到了障碍。在扩展该功能之前,我想确保没有其他工具可以满足我的需求。

我正在寻找一种将 PGN 字符串转换为 FEN 动作列表的方法。我希望load_pgn()在 chess.js 中使用将移动加载到对象中,然后遍历每个移动并调用fen()函数来输出当前的 FEN。然而,chess.js 似乎没有办法在游戏中走步。除非我错过了什么。

我宁愿不必解析字符串,但如果必须的话。有什么建议么?

解决方案:

另请参阅下面的 efirvida 答案以获取解决方案

像这样的东西(未经测试)似乎有效。该函数接受一个使用已加载 PGN的Chess对象创建的对象。chess.js

0 投票
1 回答
161 浏览

chess - Chess.js 没有检测到僵局

对于给定的 fen 字符串 -

k7/1R1RN3/p3p3/P3P2p/1PP4P/3K1PP1/8/8 b KQkq h3 0 1

Chess.js 不会检测并显示 chess.moves() 给你 ['0-0-0'],这是皇后侧的易位,没有皇后是不可能的。

任何想法?

0 投票
2 回答
2500 浏览

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

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

0 投票
1 回答
508 浏览

python - 从芦苇传感器棋盘生成 FEN 字符串,只从鱼引擎获得下一个最佳移动

我正在构建一个下棋机器人,所以在从簧片开关传感器获得 1 和 0 的 8x8 矩阵后,如何将此矩阵转换为 FEN 字符串,以便将其发送到 Stockfish 引擎?

此外,我在编写 Python 脚本时遇到了很多麻烦,该脚本可以通过 UCI 协议将 FEN 字符串作为输入发送并获得下一个最佳动作。

截至目前,我并不真正关心移动验证/检查检查伙伴/促销。我只是想采取下一步行动。

我已经浏览了很多关于 UCI 协议/API、Stockfish 引擎工作以及使用 python 编程等的链接,但没有一个真正帮助我。

我会很感激任何人的帮助!

0 投票
2 回答
213 浏览

c# - 循环没有到达流的末尾

我正在开发一个程序来分析国际象棋问题——尤其是残局问题——使用开源国际象棋引擎Stockfish 9的 .exe 版本。

这是(非常简化的)EndgameAnalyzer类:

AnalyzeByFEN方法接收一个FEN(表示国际象棋位置的字符串)并记下该位置的引擎评估。

StockfishOracle是用于与引擎通信的类(就像预言机用于与众神通信:)),使用UCI 协议。此问题的相关 UCI 命令是:

uci: 进入 uci 模式。
position fen //followed by a FEN:设置要分析的位置。
go depth 1分析一层(“移动”)深度的位置。

这是(同样,非常简化的)StockfishOracle类:

使用 FEN调用该AnalyzeByFEN方法时,控制台中不会显示任何输出。仔细调查后发现循环while (!process.StandardOutput.EndOfStream)将永远持续下去,因此永远不会返回输出。我对流程很陌生,所以我很确定我的代码中存在一些基本错误。如何解决这个问题?

谢谢!

0 投票
1 回答
352 浏览

python - 如何获取FEN位置的字符串

在我做之后

我怎样才能有一个带有位置的 FEN 的字符串?换句话说,如何从board位置的 FEN 中提取为字符串,输出与我所做的相同

?

0 投票
2 回答
875 浏览

c# - 阅读棋盘后在 Unity 中创建 FEN 字符串

我使用 C# 在 Unity 中制作了一个功能齐全的国际象棋游戏。现在我想为我使用 Stockfish 的国际象棋引擎添加 AI。我在游戏中安装了引擎,但它什么也没做,因为它无法与棋盘通信。

为了交流,我需要每行创建一个 FEN 字符串,从左上角开始,FEN 字符串如下所示:

小写为黑子,大写为白子,数字为空格,w 表示下一个白转,KQkq 表示可以进行易位,- 表示可以通过,0 1 步数。

有谁知道创建和操作字符串以制作 FEN 字符串的教程或技巧?

我将把到目前为止我所做的代码粘贴到 Stockfish 进程中,我没有做任何与 FEN 字符串相关的事情,因为我真的不知道如何启动它。

欢迎任何链接或提示