diff --git a/src/bin/client.rs b/src/bin/client.rs index 44ed9cf..05be414 100644 --- a/src/bin/client.rs +++ b/src/bin/client.rs @@ -6,6 +6,7 @@ use std::{ use checkers::{ logic::board::pawn::{CapturePath, MovePath}, network::{client::Client, message::ServerMessage, network_identity::NetworkIdentity}, + super_advanced_ai::{Bot, BotDificulty}, }; use log::{error, warn}; use tokio::sync::mpsc; @@ -14,6 +15,7 @@ const QUIT_COMMAND: &str = "/quit"; const HELP_COMMAND: &str = "/help"; const SEND_COMMAND: &str = "/send"; const READY_COMMAND: &str = "/ready"; +const SINGLEPLAYER_COMMAND: &str = "/single"; const CAPTURE_COMMAND: &str = "/capture"; const MOVE_COMMAND: &str = "/move"; @@ -22,7 +24,9 @@ enum CliCommands { Quit, Help, Send, + Ready, + Single, Capture, Move, @@ -46,6 +50,7 @@ impl TryFrom<&str> for CliCommands { HELP_COMMAND => Ok(CliCommands::Help), SEND_COMMAND => Ok(CliCommands::Send), READY_COMMAND => Ok(CliCommands::Ready), + SINGLEPLAYER_COMMAND => Ok(CliCommands::Single), CAPTURE_COMMAND => Ok(CliCommands::Capture), MOVE_COMMAND => Ok(CliCommands::Move), @@ -74,6 +79,11 @@ impl Default for ClientContext { } } +async fn run_bot() { + let bot = Bot::new(BotDificulty::Easy).await; + bot.game_loop().await; +} + #[tokio::main] async fn main() -> Result<(), Box> { env_logger::init(); @@ -112,12 +122,13 @@ async fn main() -> Result<(), Box> { │\t {} - show this message │\t {} - message the server you're ready │\t {} - send text message to the server +│\t {} - play alone │ │\t {} - choose a capture path from the list │\t {} - choose move from the list. First number is pawn you want to move and second is position it should take └─────────────────────────────────────── ", - QUIT_COMMAND, HELP_COMMAND, READY_COMMAND, SEND_COMMAND, CAPTURE_COMMAND, MOVE_COMMAND + QUIT_COMMAND, HELP_COMMAND, READY_COMMAND, SEND_COMMAND, SINGLEPLAYER_COMMAND , CAPTURE_COMMAND, MOVE_COMMAND ); println!("───────Type /help for help───────"); @@ -199,6 +210,12 @@ async fn main() -> Result<(), Box> { CliCommands::Ready => { client.signal_readiness().await; } + + CliCommands::Single => { + println!("Tried connecting bot to the server! Make sure to be /ready"); + tokio::spawn(run_bot()); + } + CliCommands::Send => { let mut args: String = words[1..].join(" "); args = args.trim().to_string(); diff --git a/src/super_advanced_ai.rs b/src/super_advanced_ai.rs index d4aebb6..a97aee9 100644 --- a/src/super_advanced_ai.rs +++ b/src/super_advanced_ai.rs @@ -28,6 +28,7 @@ impl Bot { .await .expect("Couldn't connect to the server. Is it online?"); + client.update(); client.signal_readiness().await; // bot is always ready let mut receiver = client @@ -83,12 +84,8 @@ impl Bot { content, } => { info!("Bot got message from [{}] - {}", sender, content); - client - .send_text_message( - "Why are you messaging bot? Are you stupid?".to_string(), - ) - .await; } + crate::network::message::ServerMessage::GameEnd { result } => { info!("Game has ended!"); match result {