Je construis une application liée aux échecs en utilisant nodejs. J'ai essayé d'utiliser chess.js
autant que je peux mais je pense que j'ai atteint un barrage routier en termes de fonctionnalité. Avant d'étendre cette fonctionnalité, je voulais m'assurer qu'il n'y avait pas un autre outil capable de faire ce dont j'avais besoin.Conversion d'un PGN en une liste de chaînes FEN dans nodejs (notations d'échecs)
Je suis à la recherche d'un moyen de convertir une chaîne PGN en une liste de mouvements FEN. J'espérais utiliser load_pgn()
dans chess.js pour charger les mouvements dans l'objet, puis faire une boucle sur chaque mouvement et appeler la fonction fen()
pour sortir le FEN actuel. Cependant, chess.js ne semble pas avoir un moyen de parcourir les mouvements dans une partie. À moins que je ne manque quelque chose. Je préférerais ne pas avoir à entrer dans les chaînes d'analyse, mais le fera si je le dois. Aucune suggestion?
Solution:
également voir la réponse de efirvida ci-dessous pour une solution
Quelque chose comme ça (non testé) semble fonctionner. La fonction accepte un objet Chess
créé avec chess.js
pour lequel un PGN est déjà chargé.
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;
}
Ouais, je lis l'API. Le problème est qu'une fois que vous chargez le PGN, il n'y a pas de fonction pour obtenir toutes les positions FEN pour tous les mouvements. Vous ne pouvez obtenir pour le mouvement actuel. – n0pe
avec le '.history()' vous pouvez obtenir tous les mouvements puis itère sur eux à partir du binning ayant la position fen pour chaque mouvement – efirvida
Je mets à jour ma réponse – efirvida