othello_agent/agent/
rule_based.rs1use 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}