remove unused code
This commit is contained in:
parent
6123ca177e
commit
1c9d07f2cf
@ -24,73 +24,9 @@ use serde_json::{json, Value};
|
|||||||
|
|
||||||
use crate::{
|
use crate::{
|
||||||
simulation::{self, SnakeToken},
|
simulation::{self, SnakeToken},
|
||||||
Action, Battlesnake, Board, Direction, Game, MAX_HEALTH,
|
Action, Battlesnake, Board, Direction, Game,
|
||||||
};
|
};
|
||||||
|
|
||||||
impl Battlesnake {
|
|
||||||
fn possible_actions_without_heads<'a>(
|
|
||||||
&'a self,
|
|
||||||
game: &'a Game,
|
|
||||||
board: &'a Board,
|
|
||||||
) -> impl Iterator<Item = Direction> + 'a {
|
|
||||||
enum_iterator::all::<Direction>()
|
|
||||||
.filter(|direction| {
|
|
||||||
// filter out directions that would go outside the field
|
|
||||||
let target = self.head.move_to(*direction);
|
|
||||||
(0..board.width).contains(&target.x) && (0..board.height).contains(&target.y)
|
|
||||||
})
|
|
||||||
.filter(|direction| {
|
|
||||||
let target = self.head.move_to(*direction);
|
|
||||||
// don't collide with any snake
|
|
||||||
!board
|
|
||||||
.snakes
|
|
||||||
.iter()
|
|
||||||
.filter(|snake| {
|
|
||||||
// filter out snakes that are in our squad if body collisions are allowed
|
|
||||||
!(game.ruleset.settings.squad.allow_body_collisions
|
|
||||||
&& self.squad == snake.squad
|
|
||||||
&& self.id != snake.id)
|
|
||||||
})
|
|
||||||
.flat_map(|snake| {
|
|
||||||
// get all coordinates of the snake body. The tail of the body can be ignored
|
|
||||||
// if the snake hasn't just eaten, as it will move out of the way
|
|
||||||
let has_eaten = snake.health == MAX_HEALTH;
|
|
||||||
snake.body[..snake.body.len() - usize::from(!has_eaten)].iter()
|
|
||||||
})
|
|
||||||
.any(|&coord| coord == target)
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
#[must_use]
|
|
||||||
pub fn possible_actions(&self, game: &Game, board: &Board) -> Vec<Direction> {
|
|
||||||
self.possible_actions_without_heads(game, board)
|
|
||||||
.filter(|direction| {
|
|
||||||
// don't go into spots where a bigger snake must go
|
|
||||||
let target = self.head.move_to(*direction);
|
|
||||||
!board
|
|
||||||
.snakes
|
|
||||||
.iter()
|
|
||||||
.filter(|snake| {
|
|
||||||
// The other snake must be bigger than we are
|
|
||||||
snake.length > self.length
|
|
||||||
})
|
|
||||||
.filter_map(|snake| {
|
|
||||||
// get all snakes movement options
|
|
||||||
let actions = snake
|
|
||||||
.possible_actions_without_heads(game, board)
|
|
||||||
.collect::<Vec<_>>();
|
|
||||||
// only snakes that have a single option
|
|
||||||
match actions[..] {
|
|
||||||
[direction] => Some(snake.head.move_to(direction)),
|
|
||||||
_ => None,
|
|
||||||
}
|
|
||||||
})
|
|
||||||
.any(|coord| coord == target)
|
|
||||||
})
|
|
||||||
.collect()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// info is called when you create your Battlesnake on play.battlesnake.com
|
// info is called when you create your Battlesnake on play.battlesnake.com
|
||||||
// and controls your Battlesnake's appearance
|
// and controls your Battlesnake's appearance
|
||||||
// TIP: If you open your Battlesnake URL in a browser you should see this data
|
// TIP: If you open your Battlesnake URL in a browser you should see this data
|
||||||
|
@ -22,7 +22,7 @@ const MAX_HEALTH: i32 = 100;
|
|||||||
Debug, PartialEq, Eq, PartialOrd, Ord, Hash, Clone, Copy, Deserialize, Serialize, Sequence,
|
Debug, PartialEq, Eq, PartialOrd, Ord, Hash, Clone, Copy, Deserialize, Serialize, Sequence,
|
||||||
)]
|
)]
|
||||||
#[serde(rename_all = "lowercase")]
|
#[serde(rename_all = "lowercase")]
|
||||||
pub enum Direction {
|
enum Direction {
|
||||||
/// Move left (-x)
|
/// Move left (-x)
|
||||||
Left,
|
Left,
|
||||||
/// Move up (+y)
|
/// Move up (+y)
|
||||||
@ -34,7 +34,7 @@ pub enum Direction {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Deserialize, Serialize)]
|
#[derive(Debug, Deserialize, Serialize)]
|
||||||
pub struct Action {
|
struct Action {
|
||||||
/// In which direction the snake should move
|
/// In which direction the snake should move
|
||||||
r#move: Direction,
|
r#move: Direction,
|
||||||
/// Say something to the other snakes
|
/// Say something to the other snakes
|
||||||
@ -47,7 +47,7 @@ fn is_default<T: Default + PartialEq>(value: &T) -> bool {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Deserialize, Serialize, Debug)]
|
#[derive(Deserialize, Serialize, Debug)]
|
||||||
pub struct Game {
|
struct Game {
|
||||||
/// A unique identifier for this Game
|
/// A unique identifier for this Game
|
||||||
id: String,
|
id: String,
|
||||||
/// Information about the ruleset being used to run this game
|
/// Information about the ruleset being used to run this game
|
||||||
@ -70,7 +70,7 @@ pub struct Game {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Deserialize, Serialize)]
|
#[derive(Debug, Deserialize, Serialize)]
|
||||||
pub struct Ruleset {
|
struct Ruleset {
|
||||||
/// Name of the ruleset being used to run this game.
|
/// Name of the ruleset being used to run this game.
|
||||||
name: String,
|
name: String,
|
||||||
/// The release version of the [Rules](https://github.com/BattlesnakeOfficial/rules) module used in this game.
|
/// The release version of the [Rules](https://github.com/BattlesnakeOfficial/rules) module used in this game.
|
||||||
@ -81,7 +81,7 @@ pub struct Ruleset {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Deserialize, Serialize)]
|
#[derive(Debug, Deserialize, Serialize)]
|
||||||
pub struct RulesetSettings {
|
struct RulesetSettings {
|
||||||
/// Percentage chance of spawning a new food every round.
|
/// Percentage chance of spawning a new food every round.
|
||||||
#[serde(rename = "foodSpawnChance")]
|
#[serde(rename = "foodSpawnChance")]
|
||||||
food_spawn_chance: u8,
|
food_spawn_chance: u8,
|
||||||
@ -99,7 +99,7 @@ pub struct RulesetSettings {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Deserialize, Serialize)]
|
#[derive(Debug, Deserialize, Serialize)]
|
||||||
pub struct RulesetRoyale {
|
struct RulesetRoyale {
|
||||||
/// The number of turns between generating new hazards (shrinking the safe board space).
|
/// The number of turns between generating new hazards (shrinking the safe board space).
|
||||||
#[serde(rename = "shrinkEveryNTurns")]
|
#[serde(rename = "shrinkEveryNTurns")]
|
||||||
shrink_every_n_turns: i32,
|
shrink_every_n_turns: i32,
|
||||||
@ -107,7 +107,7 @@ pub struct RulesetRoyale {
|
|||||||
|
|
||||||
#[allow(clippy::struct_excessive_bools)]
|
#[allow(clippy::struct_excessive_bools)]
|
||||||
#[derive(Debug, Deserialize, Serialize)]
|
#[derive(Debug, Deserialize, Serialize)]
|
||||||
pub struct RulesetSquad {
|
struct RulesetSquad {
|
||||||
/// Allow members of the same squad to move over each other without dying.
|
/// Allow members of the same squad to move over each other without dying.
|
||||||
#[serde(rename = "allowBodyCollisions")]
|
#[serde(rename = "allowBodyCollisions")]
|
||||||
allow_body_collisions: bool,
|
allow_body_collisions: bool,
|
||||||
@ -123,7 +123,7 @@ pub struct RulesetSquad {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Deserialize, Serialize, Debug, Clone)]
|
#[derive(Deserialize, Serialize, Debug, Clone)]
|
||||||
pub struct Board {
|
struct Board {
|
||||||
/// The number of rows in the y-axis of the game board.
|
/// The number of rows in the y-axis of the game board.
|
||||||
height: i32,
|
height: i32,
|
||||||
/// The number of columns in the x-axis of the game board.
|
/// The number of columns in the x-axis of the game board.
|
||||||
@ -138,7 +138,7 @@ pub struct Board {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Deserialize, Serialize, Debug, Clone)]
|
#[derive(Deserialize, Serialize, Debug, Clone)]
|
||||||
pub struct Battlesnake {
|
struct Battlesnake {
|
||||||
/// Unique identifier for this Battlesnake in the context of the current Game
|
/// Unique identifier for this Battlesnake in the context of the current Game
|
||||||
id: String,
|
id: String,
|
||||||
/// Name given to this Battlesnake by its author
|
/// Name given to this Battlesnake by its author
|
||||||
@ -165,7 +165,7 @@ pub struct Battlesnake {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, PartialEq, Eq, PartialOrd, Ord, Clone, Copy, Deserialize, Serialize)]
|
#[derive(Debug, PartialEq, Eq, PartialOrd, Ord, Clone, Copy, Deserialize, Serialize)]
|
||||||
pub struct Coord {
|
struct Coord {
|
||||||
x: i32,
|
x: i32,
|
||||||
y: i32,
|
y: i32,
|
||||||
}
|
}
|
||||||
@ -183,7 +183,7 @@ impl Coord {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Deserialize, Serialize, Debug)]
|
#[derive(Deserialize, Serialize, Debug)]
|
||||||
pub struct GameState {
|
struct GameState {
|
||||||
game: Game,
|
game: Game,
|
||||||
turn: i32,
|
turn: i32,
|
||||||
board: Board,
|
board: Board,
|
||||||
|
Loading…
Reference in New Issue
Block a user