diff --git a/src/agents/player.rs b/src/agents/player.rs index 1503901..5a72306 100644 --- a/src/agents/player.rs +++ b/src/agents/player.rs @@ -1,6 +1,7 @@ use std::io::{stdin, stdout, Write}; use anyhow::{bail, Result}; +use itertools::Itertools; use termion::{color, cursor::HideCursor, event::Key, input::TermRead, raw::IntoRawMode}; use crate::{ @@ -94,7 +95,7 @@ impl PlayerAgent { // Ask for input until we get a valid move loop { print!( - "\r{}{}{} ╙{}{}{}{}{}╜", + "\r{}{}{} ╙{}{}{}{}{}╜ {}", // Goal color::Fg(self.player.color()), if minimize { "Min" } else { "Max" }, @@ -109,6 +110,27 @@ impl PlayerAgent { }, color::Fg(color::Reset), " ".repeat(cursor_max - self.cursor), + self.symbol_selector + .symbols + .iter() + .map(|x| { + if board.contains(Symb::from_char(*x).unwrap()) { + format!( + "{}{x}{}", + color::Fg(color::LightBlack), + color::Fg(color::Reset), + ) + } else if *x == self.symbol_selector.current() { + format!( + "{}{x}{}", + color::Fg(self.player.color()), + color::Fg(color::Reset), + ) + } else { + format!("{x}",) + } + }) + .join("") ); stdout.flush()?;