A classic number guessing game with difficulty levels - my first Rust project!
- Rust Basics: Variables, functions, control flow
- User Input: Reading from stdin and handling input
- Random Numbers: Using external crates (
rand) - Pattern Matching: Using
matchfor game logic - Error Handling: Parsing user input safely
- Loops: Game loop and replay functionality
- Player selects difficulty (Easy: 0-9, Medium: 0-49, Hard: 0-99)
- Program generates a random secret number
- Player guesses until correct
- Feedback provided (too high/too low)
- Option to play again after winning
cargo runChoose a difficulty level: Easy, Medium, Hard
> easy
Enter your Guess:
> 5
Too low!
Total guesses: 1
Enter your Guess:
> 8
You guessed correctly!
wanna play again? (y/n)
> n
Thanks for playing! Goodbye!
use rand::*;
fn generate_secret(max: u8) -> u32 {
let mut rng = rand::rng();
rng.random_range(0..max).into()
}match difficulty.to_lowercase().as_str() {
"easy" => max = 10,
"medium" => max = 50,
"hard" => max = 100,
_ => {
println!("Invalid difficulty level. Defaulting to Easy.");
max = 10;
}
}let input_u32 = match input_val.parse() {
Ok(num) => num,
Err(_) => {
println!("Invalid input. Please enter a valid number.");
continue;
}
};- Cargo Workflow: Adding dependencies, running projects
- String Handling:
.trim(),.to_lowercase(),.as_str()- understanding when to use each - Type Conversion: Parsing strings to numbers, handling failures
- Game Loop Pattern: Structuring interactive CLI applications
- Input Validation: Making programs robust against unexpected input
- Add maximum guess limit for each difficulty
- Track high scores
- Add hints (e.g., "getting warmer/colder")
- Save game statistics to file
- Better error messages with colored output
Status: ✅ Completed | Difficulty: Beginner