From adf5b5524f922867fe036f6372b9bab376698528 Mon Sep 17 00:00:00 2001 From: Aunmag Date: Mon, 20 Jan 2020 23:18:35 +0500 Subject: [PATCH] Cleanup --- src/main.rs | 14 +++++++------- src/models/cell.rs | 4 ++-- src/models/field.rs | 8 ++------ 3 files changed, 11 insertions(+), 15 deletions(-) diff --git a/src/main.rs b/src/main.rs index 3993c38..fbeb86a 100644 --- a/src/main.rs +++ b/src/main.rs @@ -22,17 +22,17 @@ fn main() { let mut field = Field::new(FIELD_SIZE, MINES_DENSITY); let mut sapper = Sapper::new(); let mut terminal = BufferedTerminal::new(new_terminal(Capabilities::new_from_env().unwrap()).unwrap()).unwrap(); - let mut render = true; + let mut update_screen = true; let mut update_cursor = true; terminal.terminal().set_raw_mode().unwrap(); loop { - if render { + if update_screen { terminal.draw_from_screen(&field.render(&sapper), 0, 0); } - if render || update_cursor { + if update_screen || update_cursor { if !sapper.is_alive { terminal.add_change("\r\nSorry, but you've taken the wrong step. Game over, press Esc to exit."); } @@ -49,7 +49,7 @@ fn main() { }); terminal.flush().unwrap(); - render = false; + update_screen = false; update_cursor = false; } @@ -80,8 +80,8 @@ fn main() { update_cursor = true; } InputEvent::Key(KeyEvent {key: KeyCode::Char('m'), ..}) => { - field.mark(sapper.position); - render = true; + field.cells[sapper.position].toggle_mark(); + update_screen = true; field.update_is_cleaned(); } InputEvent::Key(KeyEvent {key: KeyCode::Char(' '), ..}) => { @@ -92,7 +92,7 @@ fn main() { sapper.is_alive = false; } - render = true; + update_screen = true; } } _ => {} diff --git a/src/models/cell.rs b/src/models/cell.rs index d56f24e..c53bb66 100644 --- a/src/models/cell.rs +++ b/src/models/cell.rs @@ -15,7 +15,7 @@ impl Cell { }; } - pub fn mark(&mut self) { + pub fn toggle_mark(&mut self) { match self.state { CellState::Undiscovered => self.state = CellState::Marked, CellState::Marked => self.state = CellState::Undiscovered, @@ -33,7 +33,7 @@ impl Cell { let mut mark = match self.state { CellState::Marked => 'M', CellState::Undiscovered => '.', - CellState::Discovered => char::from_digit(field.count_mines(position), 10).unwrap_or('+'), + CellState::Discovered => char::from_digit(field.count_mines_around(position), 10).unwrap_or('+'), }; if mark == '0' { diff --git a/src/models/field.rs b/src/models/field.rs index 6d31bf5..6f5dfb1 100644 --- a/src/models/field.rs +++ b/src/models/field.rs @@ -53,7 +53,7 @@ impl Field { } else { cell.discover(); - if cell.state == CellState::Discovered && self.count_mines(position) == 0 { + if cell.state == CellState::Discovered && self.count_mines_around(position) == 0 { for i in self.around(position) { if self.cells[i].state == CellState::Undiscovered { self.discover(i); @@ -65,11 +65,7 @@ impl Field { } } - pub fn mark(&mut self, position: usize) { - self.cells[position].mark(); - } - - pub fn count_mines(&self, position: usize) -> u32 { + pub fn count_mines_around(&self, position: usize) -> u32 { let mut mines = 0; for i in self.around(position) {