From f60c573ba71207c18a28413e3940a4e21b07c73f Mon Sep 17 00:00:00 2001 From: eug-vs Date: Tue, 21 Feb 2023 17:49:51 +0300 Subject: refactor: create grossmeister module --- src/grossmeister/mod.rs | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 src/grossmeister/mod.rs (limited to 'src/grossmeister/mod.rs') diff --git a/src/grossmeister/mod.rs b/src/grossmeister/mod.rs new file mode 100644 index 0000000..b7c134d --- /dev/null +++ b/src/grossmeister/mod.rs @@ -0,0 +1,35 @@ +use crate::{board::Board, attacks::Attacks}; +use self::ttable::{TranspositionTable, TTABLE_SIZE}; + +mod ttable; +mod move_generation; +mod evaluation; +mod search; + +/// Grossmeister is a powerful entity that plays the game of Chess. +/// This structure represents a player, it stores his knowledge +/// and experience about the game. +pub struct Grossmeister { + pub board: Board, + + /// Array of pre-computed attack tables. + /// This structure allows Grossmeister to calculate attacks of the pieces + /// as fast as possible using his big brain. + attacks: Attacks, + + /// Transposition table is a cache of all positions that Grossmeister + /// has seen and evaluated. + /// It's indexex by Zobrist hash of a position mod size + transposition_table: TranspositionTable, +} + + +impl Grossmeister { + pub fn new(board: Board) -> Self { + return Self { + board, + attacks: Attacks::new(), + transposition_table: vec![None; TTABLE_SIZE as usize], + } + } +} -- cgit v1.2.3