return None if no valid move was found
This commit is contained in:
parent
b7ea419d21
commit
e5b81a3ff9
@ -138,7 +138,7 @@ pub fn end(_game: &Game, _turn: i32, _board: &Board, _you: &Battlesnake) {
|
||||
// move is called on every turn and returns your next move
|
||||
// Valid moves are "up", "down", "left", or "right"
|
||||
// See https://docs.battlesnake.com/api/example-move for available data
|
||||
pub fn get_move(game: &Game, turn: i32, board: &Board, you: &Battlesnake) -> Move {
|
||||
pub fn get_move(game: &Game, turn: i32, board: &Board, you: &Battlesnake) -> Option<Move> {
|
||||
let moves = enum_iterator::all()
|
||||
.filter(|&direction| !you.is_direction_death(direction, game, board))
|
||||
.collect::<Vec<_>>();
|
||||
@ -151,12 +151,11 @@ pub fn get_move(game: &Game, turn: i32, board: &Board, you: &Battlesnake) -> Mov
|
||||
// Choose a random move from the safe ones
|
||||
let chosen = safe_moves
|
||||
.choose(&mut rand::thread_rng())
|
||||
.or_else(|| moves.choose(&mut rand::thread_rng()))
|
||||
.unwrap_or(&Direction::Up);
|
||||
.or_else(|| moves.choose(&mut rand::thread_rng()))?;
|
||||
|
||||
info!("MOVE {}: {:?}", turn, chosen);
|
||||
Move {
|
||||
Some(Move {
|
||||
r#move: *chosen,
|
||||
shout: None,
|
||||
}
|
||||
})
|
||||
}
|
||||
|
@ -201,15 +201,15 @@ fn handle_start(start_req: Json<GameState>) -> Status {
|
||||
}
|
||||
|
||||
#[post("/move", format = "json", data = "<move_req>")]
|
||||
fn handle_move(move_req: Json<GameState>) -> Json<Move> {
|
||||
fn handle_move(move_req: Json<GameState>) -> Option<Json<Move>> {
|
||||
let response = logic::get_move(
|
||||
&move_req.game,
|
||||
move_req.turn,
|
||||
&move_req.board,
|
||||
&move_req.you,
|
||||
);
|
||||
)?;
|
||||
|
||||
Json(response)
|
||||
Some(Json(response))
|
||||
}
|
||||
|
||||
#[post("/end", format = "json", data = "<end_req>")]
|
||||
|
Loading…
Reference in New Issue
Block a user