diff options
Diffstat (limited to 'src/main.rs')
-rw-r--r-- | src/main.rs | 60 |
1 files changed, 31 insertions, 29 deletions
diff --git a/src/main.rs b/src/main.rs index de2940d..00b96cf 100644 --- a/src/main.rs +++ b/src/main.rs @@ -4,44 +4,46 @@ use std::path::Path; use time::{Duration, PreciseTime}; -use steam_powered_wyrm::command::{Command, Action}; -use steam_powered_wyrm::strategy::choose_move; -use steam_powered_wyrm::json; +use steam_powered_wyrm::command::{Action, Command}; use steam_powered_wyrm::game; +use steam_powered_wyrm::json; +use steam_powered_wyrm::strategy::choose_move; fn main() { - let max_time = Duration::milliseconds(950); + let max_time = Duration::milliseconds(900); let mut game_board = None; let mut strategy_cache = None; for line in stdin().lock().lines() { let start_time = PreciseTime::now(); - + let round_number = line.expect("Failed to read line from stdin: {}"); - - let command = - match json::read_state_from_json_file(&Path::new(&format!("./rounds/{}/state.json", round_number))) { - Ok(json_state) => { - match &mut game_board { - None => { - let new_board = game::GameBoard::new(json_state); - let (command, cache) = choose_move(&new_board, strategy_cache, &start_time, max_time); - strategy_cache = Some(cache); - game_board = Some(new_board); - command - }, - Some(game_board) => { - game_board.update(json_state); - let (command, cache) = choose_move(&game_board, strategy_cache, &start_time, max_time); - strategy_cache = Some(cache); - command - } - } - }, - Err(e) => { - eprintln!("WARN: State file could not be parsed: {}", e); - Command::new(Action::DoNothing) + + let command = match json::read_state_from_json_file(&Path::new(&format!( + "./rounds/{}/state.json", + round_number + ))) { + Ok(json_state) => match &mut game_board { + None => { + let new_board = game::GameBoard::new(json_state); + let (command, cache) = + choose_move(&new_board, strategy_cache, &start_time, max_time); + strategy_cache = Some(cache); + game_board = Some(new_board); + command + } + Some(game_board) => { + game_board.update(json_state); + let (command, cache) = + choose_move(&game_board, strategy_cache, &start_time, max_time); + strategy_cache = Some(cache); + command } - }; + }, + Err(e) => { + eprintln!("WARN: State file could not be parsed: {}", e); + Command::new(Action::DoNothing) + } + }; println!("C;{};{}", round_number, command); } } |