You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

将国际象棋代数记谱法转换为FEN或棋盘矩阵的C#算法实现

国际象棋代数记谱法转FEN/矩阵布局C#实现方案

需求说明

需要基于C#实现算法,将国际象棋代数记谱法转换为FEN记谱或者8x8矩阵格式的棋盘布局,只需输出最终棋盘结构,无需保留中间走棋过程。

输入输出示例

输入示例(代数记谱法)

1. d4 Nf6 2. c4 g6 3. Nc3 d5 4. cxd5 Nxd5 5. e4 Nxc3 6. bxc3 Bg7 7. Be3 c5 8. Rc1 O-O 9. Qd2 e5 10. d5 Qd6 11. f3 f5 12. Qc2 Nd7 13. Nh3 f4 14. Bd2 Nb6 15. Nf2 c4 16. Be2 Bd7 17. O-O Qc7 18. Rb1 Nc8 19. a4 Rf6 20. Rb4 Nd6 21. Rfb1 g5 22. Qa2 Rc8 23. a5 h5 24. h3 Rg6 25. Kf1 Bf6 26. Bd1 Bd8 27. Ra1 Rb8 28. Be1 b5 29. axb6 axb6 30. Qb1 Qb7 31. Rb2 b5 32. Rba2 Bb6 33. Ra6 Kf7 34. R1a2 Rgg8 35. Qa1 Qc7 36. Be2 Bc8 37. Ra8 Rxa8 38. Rxa8 Qc5 39. Qa3 Bd7 40. Qxc5 Bxc5 41. Ra6 Ke7 42. Nd1 Rb8 43. Bf2 Bxf2 44. Kxf2 g4 45. h4 b4 46. cxb4 Rxb4 47. Ke1 g3 48. Ra8 Bc8 49. Kd2 Rb6 50. Kc2 Rb7 51. Nb2 Rc7 52. Ra4 Bd7 53. Rb4 Ra7 54. Nxc4 Nxc4 55. Bxc4 Ra1 56. Rb6 Rg1 57. Rh6 Rxg2+ 58. Kc3 Rf2 59. d6+ Kf8 60. Rg6 Rxf3+ 61. Kb4

期望输出

FEN记谱

5k2/3b4/3P2R1/4p2p/1KB1Pp1P/5rp1/8/8 b - - 1 61

矩阵格式棋盘布局

--  --  --  --  --  bK  --  --
--  --  --  bB  --  --  --  --
--  --  --  wp  --  --  wR  --
--  --  --  --  bp  --  --  bp
--  wK  wB  --  wp  bp  --  wp
--  --  --  --  --  bR  bp  --
--  --  --  --  --  --  --  --
--  --  --  --  --  --  --  --

现有基础

已实现FEN到矩阵布局的转换逻辑,仅缺少代数记谱法到FEN的转换能力。

实现方案

方案1:基于成熟库快速实现(推荐)

直接使用NuGet上的成熟国际象棋处理库Chess.NET,不需要自行实现复杂的走棋规则解析,几行代码即可完成需求:

// 先安装NuGet包:Install-Package Chess.NET
using Chess;

// 加载代数记谱法字符串为棋局对象
var chessGame = ChessGame.LoadFromPgn("这里替换为你的代数记谱法输入内容");
// 直接获取最终局面的FEN字符串
string finalFen = chessGame.Fen;
// 调用你已有的FEN转矩阵方法,即可得到矩阵布局

方案2:自行实现核心逻辑

如果需要从零实现,核心流程如下:

  1. 定义棋盘状态结构体,存储8x8棋盘棋子分布、当前走棋方、王车易位权限、过路兵位置、半回合数、全回合数这些FEN核心字段
  2. 初始化棋盘为国际象棋开局标准状态,初始化所有附属字段
  3. 拆分代数记谱字符串为单步走法列表,过滤掉回合序号、将军(+)、将死(#)等无关标记
  4. 逐走法更新棋盘状态:
    • 识别走子类型,O-O/O-O-O直接走王车易位逻辑
    • 定位走子原始位置,处理歧义走法(比如两个同类型棋子都可以走到目标位置时,根据记谱里的前缀列/行标识区分)
    • 处理吃子、升变、过路兵等特殊规则
    • 每走完一步更新走棋方、回合数等附属字段
  5. 所有走法执行完成后,将当前状态转换为FEN字符串,再用已有逻辑转矩阵即可

内容的提问来源于stack exchange,提问作者Patola

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 09:57:02