From c8be17a26a27f33cad0a808acae27612206c0d4d Mon Sep 17 00:00:00 2001 From: LinlyBoi Date: Fri, 5 May 2023 21:59:38 +0300 Subject: [PATCH] variable to store last move added for AI moves --- src/gamedata/mod.rs | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/src/gamedata/mod.rs b/src/gamedata/mod.rs index 8694444..31c78f0 100644 --- a/src/gamedata/mod.rs +++ b/src/gamedata/mod.rs @@ -13,6 +13,7 @@ pub struct Board { red_score: i32, blu_score: i32, columns: Array2D, + last_move: usize, } impl Default for Board { @@ -23,6 +24,7 @@ impl Default for Board { red_score: 0, blu_score: 0, columns, + last_move: 0, } } } @@ -34,11 +36,12 @@ impl Board { fn play(&mut self, disk: Disk, col: usize) -> bool { let column = &self.columns.as_columns()[col as usize]; let empty = column.iter().filter(|&a| matches!(a, Disk::EMPTY)).count(); - dbg!(empty); + // dbg!(empty); let top = column.len() - empty; match self.columns.set(top, col as usize, disk) { Ok(_) => { self.score_check((top, col)); + self.last_move = col; true } Err(_) => false, @@ -97,6 +100,17 @@ impl Board { .count() == 0 } + fn get_children(&self, disk: Disk) -> Vec { + let mut children: Vec = vec![]; + for column in 0..self.columns.num_columns() { + let mut child = self.clone(); + match child.play(disk, column) { + true => children.push(child), + false => {} + } + } + children + } } #[derive(Copy, Clone, Debug, PartialEq, Eq)] @@ -105,3 +119,10 @@ pub enum Disk { BLU, EMPTY, } +pub fn flip_disk(disk: Disk) -> Disk { + match disk { + Disk::RED => Disk::BLU, + Disk::BLU => Disk::RED, + Disk::EMPTY => Disk::EMPTY, //why..just why + } +}