[][src]Crate goban

Example

Get legals moves and plays some random.

The most important struct is Game who has all you need to create and manages go games.

use crate::goban::rules::*;
use crate::goban::rules::game::*;
use rand::seq::IteratorRandom;
use goban::rules::game_builder::GameBuilder;

let mut g = Game::builder()
   .size((19,19))
   .rule(CHINESE)
//  .komi(7.5)  Komi is hardcoded for each rule, but can be override like this.
   .build().unwrap();

let mut i = 35;
while !g.is_over() && i != 0 {
      g.play(
         // legals return an iterator of (x,y) points (lazy)
         g.legals()
               .choose(&mut rand::thread_rng())
               .map(|point| Move::Play(point.0,point.1))
               .unwrap());
       i -= 1;
       g.display_goban();
       // None if the game is not finished
       println!("{:?}", g.outcome());
       // Inner array using row policy
       println!("{:?}", g.goban().raw());


}
#[cfg(feature = "history")]
{
           let mut iter_history = g.history().iter();
           println!("{:?}", iter_history.next().unwrap());
           println!("{:?}", iter_history.next_back().unwrap())
}

Modules

pieces

Module containing all the necessary for playing Go. The goban structure. The stone structure.

rules

Module for ruling in the game of go.