Ich baue eine schachbezogene Anwendung mit nodejs. Ich habe versucht, chess.js
so viel wie ich kann zu verwenden, aber ich denke, ich habe einen Roadblock in Bezug auf die Funktionalität getroffen. Bevor ich diese Funktionalität erweiterte, wollte ich sicherstellen, dass es kein anderes Werkzeug gibt, das tun kann, was ich brauche.Konvertieren eines PGN in eine Liste von FEN-Strings in nodejs (Schachnotationen)
Ich bin auf der Suche nach einer Möglichkeit, eine PGN-Zeichenfolge in eine Liste von FEN-Moves zu konvertieren. Ich hoffte, load_pgn()
in chess.js zu verwenden, um die Bewegungen in das Objekt zu laden und dann jede Bewegung zu wiederholen und die Funktion fen()
aufzurufen, um das gegenwärtige FEN auszugeben. Chess.js scheint jedoch keine Möglichkeit zu haben, die Spielzüge zu durchlaufen. Es sei denn, ich verpasse etwas.
Ich würde lieber nicht in Strings Parsen gehen, aber wenn ich muss. Irgendwelche Vorschläge?
Lösung:
auch efirvida Antwort unten für eine Lösung
So etwas wie dieses (nicht getestet) sehen scheint zu funktionieren. Die Funktion akzeptiert ein Chess
-Objekt, das mit chess.js
erstellt wurde und in das bereits ein PGN geladen ist.
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;
}
Ja, las ich die API. Das Problem ist, dass nach dem Laden des PGN keine Funktion vorhanden ist, um alle FEN-Positionen für alle Züge zu erhalten. Sie können nur für den aktuellen Zug erhalten. – n0pe
mit der '.history()' Sie können alle Züge bekommen dann iteriert über sie aus dem Binning mit der Fen Position für jede Bewegung – efirvida
Ich aktualisiere meine Antwort – efirvida