Enum shogi::time::TimeControl [] [src]

pub enum TimeControl {
    Byoyomi {
        black_time: Duration,
        white_time: Duration,
        byoyomi: Duration,
    },
    FischerClock {
        black_time: Duration,
        white_time: Duration,
        black_inc: Duration,
        white_inc: Duration,
    },
}

Represents various time controls.

Currently Byo-yomi and Fischer Clock are supported.

Examples

use std::time::Duration;
use shogi::{Color, TimeControl};

let mut byoyomi = TimeControl::Byoyomi{
    black_time: Duration::from_secs(10),
    white_time: Duration::from_secs(10),
    byoyomi: Duration::from_secs(5)
};

// Black player can use the time up to black_time + byoyomi.
byoyomi.consume(Color::Black, Duration::from_secs(15));
assert_eq!(Duration::from_secs(0), byoyomi.black_time());
assert_eq!(Duration::from_secs(10), byoyomi.white_time());
use std::time::Duration;
use shogi::{Color, TimeControl};

let mut fischer_clock = TimeControl::FischerClock{
    black_time: Duration::from_secs(10),
    white_time: Duration::from_secs(10),
    black_inc: Duration::from_secs(1),
    white_inc: Duration::from_secs(1)
};

// White player gets additional 1 second after the black move.
fischer_clock.consume(Color::Black, Duration::from_secs(3));
assert_eq!(Duration::from_secs(7), fischer_clock.black_time());
assert_eq!(Duration::from_secs(11), fischer_clock.white_time());

Variants

Fields of Byoyomi

Fields of FischerClock

Methods

impl TimeControl
[src]

Returns the current remaining time for the black player.

Returns the current remaining time for the white player.

Updates the current remaining time after consuming the given amount of time for the given player.

Returns false if the given player runs out of time, true otherwise.

Examples

use std::time::Duration;
use shogi::{Color, TimeControl};

let mut byoyomi = TimeControl::Byoyomi{
    black_time: Duration::from_secs(10),
    white_time: Duration::from_secs(10),
    byoyomi: Duration::from_secs(5)
};

assert!(byoyomi.consume(Color::Black, Duration::from_secs(15)));
assert!(!byoyomi.consume(Color::White, Duration::from_secs(20)));

Trait Implementations

impl Debug for TimeControl
[src]

Formats the value using the given formatter.

impl Clone for TimeControl
[src]

Returns a copy of the value. Read more

Performs copy-assignment from source. Read more

impl Copy for TimeControl
[src]