othello_agent/agent/
rule_based.rs

1use crate::gameplay::{
2    types::{ IPlayer, IBoard, IPosition },
3    recommender::suggest_moves_rules_based,
4};
5use crate::agent::traits::Agent;
6
7pub struct RuleAgent {
8    player: IPlayer,
9}
10
11impl RuleAgent {
12    pub fn new(player: IPlayer) -> Self {
13        RuleAgent {
14            player,
15        }
16    }
17}
18
19impl Agent for RuleAgent {
20    fn get_move(&self, board: IBoard) -> Option<IPosition> {
21        let suggested_moves = self.suggest_moves(board);
22        self.select_move(suggested_moves)
23    }
24    fn suggest_moves(&self, board: IBoard) -> Vec<IPosition> {
25        let best_moves: Vec<IPosition> = suggest_moves_rules_based(board, self.player);
26        best_moves
27    }
28}