diff --git a/minmax-rs/src/minmax.rs b/minmax-rs/src/minmax.rs index 0239ba7..c7439b3 100644 --- a/minmax-rs/src/minmax.rs +++ b/minmax-rs/src/minmax.rs @@ -35,8 +35,9 @@ impl PerfectPlayer { self } - pub fn best_move(&self) -> G::Move { - self.best_move.expect("no move made yet") + pub fn best_move(&self, board: &G) -> G::Move { + self.best_move + .unwrap_or_else(|| board.possible_moves().next().expect("cannot make move")) } fn minmax( @@ -141,11 +142,7 @@ impl GamePlayer for PerfectPlayer { 0, ); - board.make_move( - self.best_move - .unwrap_or_else(|| board.possible_moves().next().expect("cannot make move")), - this_player, - ); + board.make_move(self.best_move(board), this_player); if self.print_time { let duration = start.elapsed(); diff --git a/rs-wrapper/src/lib.rs b/rs-wrapper/src/lib.rs index a4f6823..480cc86 100644 --- a/rs-wrapper/src/lib.rs +++ b/rs-wrapper/src/lib.rs @@ -74,7 +74,7 @@ pub fn play_move(env: JNIEnv<'_>, current_player: i8, board: JObject<'_>) -> i32 }; player.next_move(&mut board, current_player_rust); - let result_move = player.best_move(); + let result_move = player.best_move(&board); board.undo_move(result_move); let result_move = board.drop_player(result_move);