资 源 简 介
翻译maninwest@Codeforge 作者Alexander Chernosvitov @CodeProject
相信很多开发人员喜欢国际象棋。使用便携式游戏符号 (PGN) 来记录游戏的走步和注释 (如. 1. e4 e5 2. Nf3 ...)。有很多不同语言,包括JavaScript,编写的国际象棋 PGN-查看器。但是使用 document.write("Some HTML") 操作符写的却让我感到困惑。这种程序设计风格看上去很蹩脚,且不会激发人们的灵感。
背景
都说 JavaScript 支持面向对象的风格。你可以尝试开发很多有用的应用来测试这种断言是否属实。 当我意识到 JavaScript 的强大功能以及其在现代Web应用中的必要性后,我选择了 PGN 查看器的问题作为着手点。我找时间实现了一个算法:通过上一步 FEN 字符串和当前走步符号来计算 FEN-like 的 string (描述国际象棋在当前走步后的位置) 的算法。
FEN -- Forsyth–Edwards Notation (FEN).例如,假设上一个FEN-like string 是
"rnb...nrpp.k.Bpp..pp................PB....bP.Q..P.PKN.PPq......R"
它描述第 11 步后(如上图所示)棋盘上所有的 64 个方格。下一步是 : 12. Nxc3 (马吃掉一枚棋子黑象占据 C3)。问题是走了 Nc3 后如何得出下一个 FEN-like字符串。该字符串需要类似于:
"rnb...nrpp.k.Bpp..pp............