TurboChess is a chess move generator. It supports:
To get started, create a new Position and now you can work with legal moves
```rs 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()); ```
rs
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!")
```rs let mut pos: Position = Position::default(); let legals: MoveList = pos.legal();
// Gets a random move let mut rng = rand::threadrng(); let index = rng.genrange(0..legals.count()); let mv = legals.get(index);
println!("Move: {mv}"); pos.make_move(mv); println!("{pos}"); println!("New FEN: {}", pos.fen()); ```
Actually, TurboChess probably has performance issues and errors that can be fixed to be faster and accurate. If you find some of these errors, please raise an issue. Thanks!