diff --git a/src/main.rs b/src/main.rs index ef956df..a2d0a52 100644 --- a/src/main.rs +++ b/src/main.rs @@ -3,7 +3,7 @@ use std::io::stdout; use std::sync::mpsc::{self, Receiver}; use std::thread; -use crossterm::cursor::MoveTo; +use crossterm::cursor::{MoveTo, Hide, Show}; use crossterm::event::{read, Event, KeyCode}; use crossterm::execute; use crossterm::style::{Print, Stylize}; @@ -17,7 +17,7 @@ use rand::random; fn main() { let g = Game::new(); - execute!(stdout(), EnterAlternateScreen); + execute!(stdout(), EnterAlternateScreen, Hide); enable_raw_mode(); g.render_board(); @@ -42,7 +42,7 @@ fn main() { }, ); disable_raw_mode(); - execute!(stdout(), LeaveAlternateScreen); + execute!(stdout(), LeaveAlternateScreen, Show); } #[derive(Clone, Debug)] @@ -182,7 +182,14 @@ impl Game { } fn new_apple(&mut self) { - self.apple_pos = Self::gen_apple(self.board_size.0, self.board_size.1); + let mut new_pos = Self::gen_apple(self.board_size.0, self.board_size.1); + + while self.snake.contains(&new_pos) { + new_pos = Self::gen_apple(self.board_size.0, self.board_size.1); + } + + + self.apple_pos = new_pos; } fn next_pos(&self) -> Result<(usize, usize), GameOverState> {