1.0.3 • Published 3 years ago

@dousha99/cchess v1.0.3

Weekly downloads
-
License
MIT
Repository
-
Last release
3 years ago

cchess - 中国象棋棋盘状态表示与验证库

记号说明

以开局时黑方右手侧車为原点建立右手坐标系,即行为 x 轴,列为 y 轴。

无论标记哪一方的棋子或动作,均使用此坐标系。

棋盘记号说明

一枚棋子的表示方法为 ${棋子类型}${行号}${列号}. 行号和列号均从 0 开始。 如开局时红方右手侧的俥为 R98.

棋子类型如下表所示:

类型红方记号黑方记号
兵卒Pp
炮砲Cc
俥車Rr
傌馬Kk
相象Bb
仕士Aa
帥將Gg

保存一个棋盘时,所有棋子按记法依次写入为一个字符串。 棋子写入的顺序不做保证。

步法记号说明

步法记号由 5 部分组成:${棋子类型}${唯一性标识?}${列号}${方向}${位移}.

唯一性标识

当一列上有多个同类型的棋子时,按顺序为这些棋子从 1 开始标号。唯一性标识即为编号数。 编号的顺序:对于黑方,按行号递减方向依次编号;对于红方,按行号递增方向依次编号。

如果该列上该棋子唯一,则省略不写。

方向

对于黑方,行号增加方向为 +, 行号降低方向为 -; 对于红方,行号增加方向为 -, 行号降低方向为 +.

行号不改变,方向为 =.

位移

对于在水平与竖直方向上行走的棋子: 当方向不为 = 时,代表前进或后退几行;当方向为 = 时,代表去往的列号。

对于在斜线方向上行走的棋子: 方向始终不为 =. 位移代表去往的列号。

示例

开局

r00k01b02a03g04a05b06k07r08c21c27p30p32p34p36p38P60P62P64P66P68C71C77R90K91B92A93G94A95B96K97R98

残局

g04a05R08a14P37C44b46c61K76r82A84G94

样例应将方法:

  • 象 7 退 5: b6-4
  • 士 5 退 4: a4-3
  • 将 5 平 4: g4=3
1.0.3

3 years ago

1.0.2

4 years ago

1.0.1

4 years ago

1.0.0

4 years ago