From 6291739e3f7f95a36d06e573c101d3fd0c258792 Mon Sep 17 00:00:00 2001 From: ridethepig Date: Sun, 19 Feb 2023 13:07:18 +0000 Subject: [PATCH] hangman done --- week1/part-3-hangman/src/main.rs | 60 ++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) diff --git a/week1/part-3-hangman/src/main.rs b/week1/part-3-hangman/src/main.rs index 1d6cfe6..d8da0c1 100644 --- a/week1/part-3-hangman/src/main.rs +++ b/week1/part-3-hangman/src/main.rs @@ -35,6 +35,66 @@ fn main() { let secret_word_chars: Vec = secret_word.chars().collect(); // Uncomment for debugging: // println!("random word: {}", secret_word); + let mut guess_count = NUM_INCORRECT_GUESSES; + let mut right_count = 0; + let mut display_str: Vec = Vec::new(); + let mut guessed_chars = Vec::new(); + let mut found; + for _ in 0..secret_word.len() { + display_str.push('-'); + } + println!("Welcome to CS110L Hangman!"); + loop { + println!( + "The word so fat is {}", + display_str.iter().collect::() + ); + println!( + "You have guessed the following letters: {}", + guessed_chars.iter().collect::() + ); + println!("You have {} guesses left", guess_count); + print!("Please guess a letter: "); + io::stdout().flush().expect("Error flushing stdout"); + let mut guess = String::new(); + io::stdin().read_line(&mut guess).expect("Error readline"); + let guess = guess.trim(); + if guess.len() != 1 { + println!( + "Invalid input \"{}\", only one letter is acceptable!", + guess + ); + continue; + } + found = false; + let guess = guess.chars().nth(0).unwrap(); + guessed_chars.push(guess); + for i in 0..secret_word_chars.len() { + if secret_word_chars[i] == guess && display_str[i] == '-' { + display_str[i] = guess; + found = true; + right_count += 1; + break; + } + } + if !found { + guess_count -= 1; + println!("Sorry, that letter is not in the word"); + } + print!("\n"); + + if guess_count == 0 { + println!("Sorry, you ran out of guesses!"); + break; + } + if right_count == secret_word_chars.len() { + println!( + "Congratulations you guessed the secret word: {}!", + secret_word + ); + break; + } + } // Your code here! :) }