Skip to content

Instantly share code, notes, and snippets.

@radzionc
Created December 31, 2019 04:00
Show Gist options
  • Save radzionc/549e4b672a84ceb7c78d6effed013ab8 to your computer and use it in GitHub Desktop.
Save radzionc/549e4b672a84ceb7c78d6effed013ab8 to your computer and use it in GitHub Desktop.
impl Game {
// ...
pub fn is_over(&self) -> bool {
let snake_len = self.snake.len();
let last = self.snake[snake_len - 1];
let Vector { x, y } = last;
if x < 0_f64 || x > f64::from(self.width) || y < 0_f64 || y > f64::from(self.height) {
return true;
}
if snake_len < 5 {
return false;
}
let segments = get_segments_from_vectors(&self.snake[..snake_len - 3]);
return segments.iter().any(|segment| {
let projected = segment.get_projected_point(&last);
segment.is_point_inside(&projected) && Segment::new(&last, &projected).length() < 0.5
});
}
// ...
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment