[][src]Crate shogai

Shogai is a rust shogi helper. It can handle the game mechanic and even provides a small cli interface, as well as a very simple (and stupid) bot

Examples

imports :

//minimum required to make work the following
use shogai::board::Board;
use shogai::ai::{greedy, get_move_from_human};
// complete, may allow finner control over move-checking or allow easy situation generation
use shogai::board::*;
use shogai::piece::*;
use shogai::invalidmoveerror::*;

Playing against the ai:

let mut b = Board::new();

loop {
   println!("");
   println!("{:?} turn", b.get_color());
   println!("{}", b);

   let mv: String;
   if b.get_turn() {
       mv = get_move_from_human(&b);
   } else {
       mv = greedy(&b);
   }

   println!("{:?} has chosen the move: {}", b.get_color(), mv);
   b = b.play_move_unchecked(&mv); //because checks are done within greedy and get_human_move
   if b.game_over() {
       println!("{:?} has lost the game!", b.get_color());
       println!("final disposition of the board is \n{}", b);

       break;
   }
}

Help a human player choose a move (filter illegal moves):

let mut b = Board::new();
println!("{}", b);
println!("choose within : {:?}", b.iter_moves().collect::<Vec<_>>());
println!("Type in your move:");
//...read user input... or use ai::get_move_from_human

Play pre-determined moves:

let first_player_move = "P9c-9d";
let second_player_move = "K5i-5h";

let mut b = Board::new();
println!("{}", b);



b = b.play_move(&first_player_move);



println!("{}", b);


//equivalent to play_move()
assert!(b.check_move(&second_player_move).is_ok());
b.play_move_unchecked(&second_player_move);

println!("{}", b);

Modules

ai

Provide user with a way to generate moves

board

Manage and manipulate information about the shogi board (shogiban) state

invalidmoveerror

Check a move against a board, to ensure legality. Different functions are used to check differents types of incorrect moves.

movement

Handles the conversion from string literal to computer-understandable movement structure respect the standard notation (see: Western notation);

piece

Represent shogi pieces

position

Represent square of the shogiban