display game

This commit is contained in:
2025-01-28 11:51:29 -05:00
parent c48a4595c3
commit d8e50fe218
3 changed files with 46 additions and 2 deletions

View File

@@ -4,24 +4,45 @@ use crate::repr::{Board, Piece};
pub trait Agent {
fn next_move(&mut self, board: &Board) -> Option<(usize, usize)>;
fn name(&self) -> &'static str;
fn color(&self) -> Piece;
}
pub struct ManualAgent {}
pub struct ManualAgent {
color: Piece,
}
impl Agent for ManualAgent {
fn next_move(&mut self, board: &Board) -> Option<(usize, usize)> {
todo!("user input not implemented")
}
fn name(&self) -> &'static str {
"Manual Agent"
}
fn color(&self) -> Piece {
self.color
}
}
pub struct QueueAgent {
moves: VecDeque<(usize, usize)>,
color: Piece,
}
impl Agent for QueueAgent {
fn next_move(&mut self, board: &Board) -> Option<(usize, usize)> {
self.moves.pop_front()
}
fn name(&self) -> &'static str {
"Queue Agent"
}
fn color(&self) -> Piece {
self.color
}
}
pub struct AutoAgent {
@@ -32,6 +53,14 @@ impl Agent for AutoAgent {
fn next_move(&mut self, board: &Board) -> Option<(usize, usize)> {
todo!("next_move not implemented")
}
fn name(&self) -> &'static str {
"Auto Agent"
}
fn color(&self) -> Piece {
self.color
}
}
impl AutoAgent {