diff options
| -rw-r--r-- | src/main.rs | 33 |
1 files changed, 11 insertions, 22 deletions
diff --git a/src/main.rs b/src/main.rs index c98c0ca..13f4271 100644 --- a/src/main.rs +++ b/src/main.rs @@ -226,22 +226,11 @@ impl Snake { } } -#[derive(Debug)] -struct Fruit { - pos: Pos, -} - -impl Fruit { - fn print(&self) -> Result<(), Box<dyn Error>> { - move_cursor(self.pos)?; - write!(stdout(), "@")?; - Ok(()) - } - - fn new_pos(&mut self) { - self.pos.row = rand(i32::from(Screen::ROWS) - 4) as i8 + 2; - self.pos.col = rand(i32::from(Screen::COLS) - 4) as i8 + 2; - } +fn new_pos() -> Pos { + pos( + rand(i32::from(Screen::ROWS) - 4) as i8 + 2, + rand(i32::from(Screen::COLS) - 4) as i8 + 2, + ) } fn snake() -> Result<i64, Box<dyn Error>> { @@ -251,8 +240,7 @@ fn snake() -> Result<i64, Box<dyn Error>> { direction: Dir::Right, growing: 0, }; - let mut fruit = Fruit { pos: pos(0, 0) }; - fruit.new_pos(); + let mut fruit = new_pos(); let mut score: i64 = 0; let mut real_score: i64 = 0; let mut delay = Duration::from_millis(200); @@ -261,7 +249,8 @@ fn snake() -> Result<i64, Box<dyn Error>> { move_cursor(pos(0, 3))?; write!(stdout(), " Score: {} ", score)?; snake.print()?; - fruit.print()?; + move_cursor(fruit)?; + write!(stdout(), "@")?; move_cursor(pos(Screen::ROWS - 1, Screen::COLS - 1))?; stdout().flush()?; @@ -275,11 +264,11 @@ fn snake() -> Result<i64, Box<dyn Error>> { }; snake.step(); - if snake.body[0] == fruit.pos { + if snake.body[0] == fruit { snake.growing += 6; loop { - fruit.new_pos(); - if !snake.body.contains(&fruit.pos) { + fruit = new_pos(); + if !snake.body.contains(&fruit) { break; } } |
