diff --git a/guessing_game/src/main.rs b/guessing_game/src/main.rs index 6f2fb5d..3e59866 100644 --- a/guessing_game/src/main.rs +++ b/guessing_game/src/main.rs @@ -3,34 +3,77 @@ use std::cmp::Ordering; use std::io; use rand::Rng; -fn main() { - println!("Guess the number!"); - let secret_number = rand::thread_rng().gen_range(1..=100); - print!("The secret number is: {secret_number}\n"); - loop { - println!("Please input your guess."); - let mut guess = String::new(); - io::stdin() - .read_line(&mut guess) - .expect("Failed to read line!"); - let guess: u32 = match guess.trim().parse() { - Ok(num) => num, - Err(_) => continue, - }; - println!("You guessed: {guess}"); - match guess.cmp(&secret_number) { - Ordering::Less => println!("Too small!"), - Ordering::Greater => println!("Too big!"), - Ordering::Equal => { - println!("You win!"); - break; - } - } - } +// fn main() { +// println!("Guess the number!"); +// let secret_number = rand::thread_rng().gen_range(1..=100); +// print!("The secret number is: {secret_number}\n"); +// loop { +// println!("Please input your guess."); +// let mut guess = String::new(); +// io::stdin() +// .read_line(&mut guess) +// .expect("Failed to read line!"); +// let guess: u32 = match guess.trim().parse() { +// Ok(num) => num, +// Err(_) => continue, +// }; +// println!("You guessed: {guess}"); +// match guess.cmp(&secret_number) { +// Ordering::Less => println!("Too small!"), +// Ordering::Greater => println!("Too big!"), +// Ordering::Equal => { +// println!("You win!"); +// break; +// } +// } +// } +// } + + +fn main() { + println!("Guess the number!"); + + // Breaking down the random number generation + let mut rng = rand::thread_rng(); + let secret_number = rng.gen_range(1..=100); + + println!("The secret number is: {secret_number}"); + + loop { + println!("Please input your guess."); + let mut guess_text = String::new(); + + // Breaking down the IO input + let stdin = io::stdin(); + stdin.read_line(&mut guess_text).expect("Failed to read line!"); + + // Breaking down the parsing logic + let trimmed_guess = guess_text.trim(); + let parsed_result = trimmed_guess.parse::(); + + let guess: u32 = match parsed_result { + Ok(num) => num, + Err(_) => { + println!("Please enter a valid number."); + continue; + } + }; + + println!("You guessed: {guess}"); + + match guess.cmp(&secret_number) { + Ordering::Less => println!("Too small!"), + Ordering::Greater => println!("Too big!"), + Ordering::Equal => { + println!("You win!"); + break; + } + } + } } @@ -38,12 +81,7 @@ fn main() { - - - - - - +