Skip to content

zredb/aichess

Repository files navigation

棋子类型:

K 帅: 1
A 仕: 2
B 相: 3
N 马: 4
R 车: 5
C 炮: 6
P 兵: 7 

Move 中文记谱格式

Move 结构体实现了 Display trait,可以将着法转换为中文纵线格式(如"马二进三")。

使用示例

use aichess::pos::moves::Move;

// 马二进三: 红马从纵线2进到纵线3
let from = (12 << 4) | 10;  // rank=12, file=10
let to = (10 << 4) | 9;     // rank=10, file=9
let mv = Move::new('N', from, to as u8);
println!("{}", mv);  // 输出: 马二进三

// 车一平二: 红车横向移动
let from = (12 << 4) | 11;
let to = (12 << 4) | 10;
let mv = Move::new('R', from, to as u8);
println!("{}", mv);  // 输出: 车一平二

// 炮二进四: 红炮前进4步
let from = (12 << 4) | 10;
let to = (8 << 4) | 10;
let mv = Move::new('C', from, to as u8);
println!("{}", mv);  // 输出: 炮二进四

记谱规则

  1. 棋子名称:根据棋子类型和颜色显示对应的中文字符

    • 红方:帅、仕、相、马、车、炮、兵
    • 黑方:将、士、象、马、车、炮、卒
  2. 纵线编号

    • 红方:从右到左为 1-9
    • 黑方:从左到右为 1-9
  3. 移动方向

    • 进:向前移动(红方向上,黑方向下)
    • 退:向后移动(红方向下,黑方向上)
    • 平:横向移动
  4. 目标位置表示

    • 车、炮、兵(卒)、帅(将):使用目标位置的纵线编号
    • 马、相(象)、仕(士):使用移动的步数(行数差)

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages