2 个不稳定版本

0.2.0 2023 年 8 月 31 日
0.1.0 2023 年 8 月 30 日

#357机器学习

MIT 许可证

2.5MB
119K SLoC

TurboChess 库

TurboChess 是一个棋子移动生成器。它支持

  • PEXT 位图(模拟)
  • 创建和撤销位置
  • Zobrist 哈希
  • FEN 支持

要开始使用,创建一个新的 Position,现在您可以处理合法的移动

let pos: Position = Position::default(); // Loads the initial position
// Or you can also use another position
// let pos: Position = Position::from_str("r3k2r/p1ppqpb1/bn2pnp1/3PN3/1p2P3/2N2Q1p/PPPBBPPP/R3K2R w KQkq - 0 1").unwrap();

let legals: MoveList = pos.legal(); // Gets all legal moves in the position
for mv in legals {
   println!("{mv}"); // Prints the move in the UCI format
}

println!("Legal count: {}", legals.count());
let mut pos: Position = Position::default();
let legals: MoveList = pos.legal(); // Gets all legal moves in the position
for mv in legals {
   pos.make_move(mv);
   println!("Doing stuff with move...")
   pos.undo_move(mv);
}
println!("Finished!")

示例 3:随机移动

let mut pos: Position = Position::default();
let legals: MoveList = pos.legal();

// Gets a random move
let mut rng = rand::thread_rng();
let index = rng.gen_range(0..legals.count());
let mv = legals.get(index);

println!("Move: {mv}");
pos.make_move(mv);
println!("{pos}");
println!("New FEN: {}", pos.fen());

为 TurboChess 贡献

实际上,TurboChess 可能存在性能问题和错误,可以被修复以使其更快、更准确。如果您发现这些错误中的任何一个,请提出问题。谢谢!

无运行时依赖