Struct ConnectFour

Source
pub struct ConnectFour { /* private fields */ }
Expand description

Implementation of the Connect Four game. The board is implemented as to 64 bit masks. It allows for fast checking of winning conditions and legal moves. Apart from being able to play connect four, this type also features some utility functions which can help with implementations of heuristics and solvers.

Implementations§

Source§

impl ConnectFour

Source

pub fn new() -> ConnectFour

Create an empty board

Source

pub fn play(&mut self, column: Column) -> bool

Inserts a stone for the current player. true if move has been legal

true if the column is not full.

Source

pub fn from_move_list(move_list: &str) -> ConnectFour

Create a game state from a sequence of moves. Each move represented as a number from 1 to 7 standing for the column the player put in their stones.

Source

pub fn print_to(&self, out: impl Write) -> Result<()>

Prints out a text representation of a board to out

Source

pub fn legal_moves(&self) -> impl Iterator<Item = Column> + use<'_>

Source

pub fn stones(&self) -> u8

Number of stones in the board

Source

pub fn is_victory(&self) -> bool

true if the player which did insert the last stone has won the game.

Source

pub fn encode(&self) -> u64

Uses the first 49 Bits to uniquely encode the board.

Source

pub fn can_win_in_next_move(&self) -> bool

true if the current player has winning moves available

Source

pub fn is_over(&self) -> bool

true if game has a winner or is a draw.

Source

pub fn non_loosing_moves(&self) -> impl Iterator<Item = Column>

List all moves, which prevent the opponet from winning immediately. Only gives valid results if Self::can_win_in_next_move is false.

Trait Implementations§

Source§

impl Clone for ConnectFour

Source§

fn clone(&self) -> ConnectFour

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Default for ConnectFour

Source§

fn default() -> ConnectFour

Returns the “default value” for a type. Read more
Source§

impl Display for ConnectFour

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Hash for ConnectFour

Source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · Source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
Source§

impl PartialEq for ConnectFour

Source§

fn eq(&self, other: &ConnectFour) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Copy for ConnectFour

Source§

impl Eq for ConnectFour

Source§

impl StructuralPartialEq for ConnectFour

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T> ToString for T
where T: Display + ?Sized,

Source§

fn to_string(&self) -> String

Converts the given value to a String. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.