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
Byoyomi
Fields of Byoyomi
black_time: Duration | |
white_time: Duration | |
byoyomi: Duration |
FischerClock
Fields of FischerClock
black_time: Duration | |
white_time: Duration | |
black_inc: Duration | |
white_inc: Duration |
Methods
impl TimeControl
[src]
fn black_time(&self) -> Duration
Returns the current remaining time for the black player.
fn white_time(&self) -> Duration
Returns the current remaining time for the white player.
fn consume(&mut self, c: Color, d: Duration) -> bool
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]
impl Clone for TimeControl
[src]
fn clone(&self) -> TimeControl
Returns a copy of the value. Read more
fn clone_from(&mut self, source: &Self)
1.0.0
Performs copy-assignment from source
. Read more