From f9c4bd620b4f2bb176beeb5eca35685453cedbbd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?U=C4=9Fur=20K=C3=BCpeli?= Date: Wed, 4 May 2022 12:32:14 +0300 Subject: [PATCH] fixed draw_board --- 62_Mugwump/rust/src/draw.rs | 64 ++++++++++++++++++++++++++++++++ 62_Mugwump/rust/src/main.rs | 73 ++++--------------------------------- 2 files changed, 72 insertions(+), 65 deletions(-) create mode 100644 62_Mugwump/rust/src/draw.rs diff --git a/62_Mugwump/rust/src/draw.rs b/62_Mugwump/rust/src/draw.rs new file mode 100644 index 00000000..c5fd975b --- /dev/null +++ b/62_Mugwump/rust/src/draw.rs @@ -0,0 +1,64 @@ +use crate::{CoordState, Coordinate}; + +pub fn draw_board(coords: Vec) { + let draw_top_bottom = |is_top: bool| { + let (mut left, mut right) = ("╔", "╗"); + + if !is_top { + (left, right) = ("╚", "╝"); + } + + for i in 0..11 { + if i == 0 { + print!("{}══", left); + } else if i == 10 { + print!("═══{}", right) + } else { + print!("══"); + } + } + println!(""); + }; + + //println!("coords length: {}", coords.len()); + + draw_top_bottom(true); + + let mut y: i8 = 9; + + print!("║ {} ", y); + for (i, c) in coords.iter().enumerate() { + let mut _char = ' '; + + match c.state { + CoordState::Normal => _char = '-', + CoordState::HasMugwump => _char = '𑗌', + CoordState::Checked => _char = '*', + } + + print!("{} ", _char); + + if ((i + 1) % 10) == 0 { + y -= 1; + + print!("║"); + println!(""); + + if i != 99 { + print!("║ {} ", y); + } + } + } + + print!("║ 𑗌 "); + for i in 0..10 { + print!("{} ", i); + + if i == 9 { + print!("║"); + } + } + println!(""); + + draw_top_bottom(false); +} diff --git a/62_Mugwump/rust/src/main.rs b/62_Mugwump/rust/src/main.rs index 470b9411..5c52ca06 100644 --- a/62_Mugwump/rust/src/main.rs +++ b/62_Mugwump/rust/src/main.rs @@ -1,7 +1,11 @@ #![allow(dead_code)] +mod draw; + use rand::Rng; +use crate::draw::draw_board; + struct Game { coords: Vec, tries: u8, @@ -26,7 +30,7 @@ impl Game { let mut y: i8 = 9; for i in 0..100 { - println!("current pos: {:?}", (x, y)); + //println!("current pos: {:?}", (x, y)); let mut has_mugwump = false; if random_indexes.contains(&i) { @@ -49,67 +53,6 @@ impl Game { state: GameState::Playing, } } - - fn draw_board(&self) { - let draw_top_bottom = |is_top: bool| { - let (mut left, mut right) = ("╔", "╗"); - - if !is_top { - (left, right) = ("╚", "╝"); - } - - for i in 0..11 { - if i == 0 { - print!("{}══", left); - } else if i == 10 { - print!("═══{}", right) - } else { - print!("══"); - } - } - println!(""); - }; - - println!("coords length: {}", self.coords.len()); - - draw_top_bottom(true); - - // Draw points - let mut y: i8 = 9; - - print!("║ {} ", y); - - for (i, c) in self.coords.iter().enumerate() { - let mut char = '-'; - - match c.state { - CoordState::Normal => (), - CoordState::HasMugwump => char = '𑗌', - CoordState::Checked => char = '*', - } - - print!("{} ", char); - - if (i % 10) == 0 { - print!("║"); - println!(""); - print!("║ {} ", y); - y -= 1; - } - } - - print!("║ 𑗌 "); - for i in 0..10 { - print!("{} ", i); - - if i == 9 { - print!("║"); - } - } - println!(""); - - draw_top_bottom(false); - } } enum GameState { @@ -119,7 +62,7 @@ enum GameState { } #[derive(Debug)] -struct Coordinate { +pub struct Coordinate { x: usize, y: usize, state: CoordState, @@ -142,7 +85,7 @@ impl Coordinate { } #[derive(Debug, PartialEq)] -enum CoordState { +pub enum CoordState { Normal, HasMugwump, Checked, @@ -162,5 +105,5 @@ fn main() { println!("YOU HOW FAR YOU ARE FROM EACH MUGWUMP.\n"); let game = Game::new(); - game.draw_board(); + draw_board(game.coords); }