Javascript象棋符号转换function

我正在寻找一个JavaScript库转换PGN文件移动符号,包括件和目的地如:

... 3. cxd5 Qxd5 ... 

成符号只能用方形坐标来表示,如:

 ... 3. c4-d5 h5-d5 ... 

没有图书馆,要把这个坚实的岩石固定下来将是一个相当大的工作,因为它必须通过每一个步骤,并且validation合法的移动以确定哪个片段可以到达目的地广场。

有什么JavaScript的帮助下,或者我可以轻松地移植到另一种语言?

前言:我不是一个棋手,也不是我完全理解PGN。 不过,我认为这是正确的。 让我知道,如果我closures了。

既然你说你想做这个服务器端,我找了node.js国际象棋包。 有一堆来自nodejs模块标记国际象棋的好看的候选人。 我结束了使用jhlywa / chess.js 。

app.js

 var cjs = require('./chess.js'), chess = new cjs.Chess(), pgn = ['[Event "Casual Game"]', '[Site "Berlin GER"]', '[Date "1852.??.??"]', '[EventDate "?"]', '[Round "?"]', '[Result "1-0"]', '[White "Adolf Anderssen"]', '[Black "Jean Dufresne"]', '[ECO "C52"]', '[WhiteElo "?"]', '[BlackElo "?"]', '[PlyCount "47"]', '', '1.e4 e5 2.Nf3 Nc6 3.Bc4 Bc5 4.b4 Bxb4 5.c3 Ba5 6.d4 exd4 7.O-O', 'd3 8.Qb3 Qf6 9.e5 Qg6 10.Re1 Nge7 11.Ba3 b5 12.Qxb5 Rb8 13.Qa4', 'Bb6 14.Nbd2 Bb7 15.Ne4 Qf5 16.Bxd3 Qh5 17.Nf6+ gxf6 18.exf6', 'Rg8 19.Rad1 Qxf3 20.Rxe7+ Nxe7 21.Qxd7+ Kxd7 22.Bf5+ Ke8', '23.Bd7+ Kf8 24.Bxe7# 1-0'], i = 1, moveHistory; chess.load_pgn(pgn.join('\n')); moveHistory = chess.history({ verbose: true }); while (moveHistory.length > 0) { var p1Move = moveHistory.shift(), p2Move = moveHistory.shift(), p1c = p1Move.from + '-' + p1Move.to, p2c = (p2Move == undefined) ? '' : p2Move.from + '-' + p2Move.to; console.log(i + '. ' + p1c + ' ' + p2c ); i++; } 

console.log输出:

 1. e2-e4 e7-e5 2. g1-f3 b8-c6 3. f1-c4 f8-c5 4. b2-b4 c5-b4 5. c2-c3 b4-a5 6. d2-d4 e5-d4 7. e1-g1 d4-d3 8. d1-b3 d8-f6 9. e4-e5 f6-g6 10. f1-e1 g8-e7 11. c1-a3 b7-b5 12. b3-b5 a8-b8 13. b5-a4 a5-b6 14. b1-d2 c8-b7 15. d2-e4 g6-f5 16. c4-d3 f5-h5 17. e4-f6 g7-f6 18. e5-f6 h8-g8 19. a1-d1 h5-f3 20. e1-e7 c6-e7 21. a4-d7 e8-d7 22. d3-f5 d7-e8 23. f5-d7 e8-f8 24. a3-e7