棋子类型:
K 帅: 1
A 仕: 2
B 相: 3
N 马: 4
R 车: 5
C 炮: 6
P 兵: 7
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-9
- 黑方:从左到右为 1-9
-
移动方向:
- 进:向前移动(红方向上,黑方向下)
- 退:向后移动(红方向下,黑方向上)
- 平:横向移动
-
目标位置表示:
- 车、炮、兵(卒)、帅(将):使用目标位置的纵线编号
- 马、相(象)、仕(士):使用移动的步数(行数差)