我正在使用 nodejs 构建一个与国际象棋相关的应用程序。我一直在尝试chess.js
尽可能多地使用,但我认为我在功能方面遇到了障碍。在扩展该功能之前,我想确保没有其他工具可以满足我的需求。
我正在寻找一种将 PGN 字符串转换为 FEN 动作列表的方法。我希望load_pgn()
在 chess.js 中使用将移动加载到对象中,然后遍历每个移动并调用fen()
函数来输出当前的 FEN。然而,chess.js 似乎没有办法在游戏中走步。除非我错过了什么。
我宁愿不必解析字符串,但如果必须的话。有什么建议么?
解决方案:
另请参阅下面的 efirvida 答案以获取解决方案
像这样的东西(未经测试)似乎有效。该函数接受一个使用已加载 PGN的Chess
对象创建的对象。chess.js
function getMovesAsFENs(chessObj) {
var moves = chessObj.history();
var newGame = new Chess();
var fens = [];
for (var i = 0; i < moves.length; i++) {
newGame.move(moves[i]);
fens.push(newGame.fen());
}
return fens;
}