Open in github.dev
Open in a new github.dev tab
Permalink
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
85 lines (78 sloc)
2.63 KB
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| use rand::Rng; | |
| use std::io; | |
| fn main() { | |
| println!( | |
| "{: >39}\n{: >57}\n\n\n", | |
| "STARS", "CREATIVE COMPUTING MORRISTOWN, NEW JERSEY" | |
| ); | |
| // STARS - PEOPLE'S COMPUTER CENTER, MENLO PARK, CA | |
| // A IS LIMIT ON NUMBER, M IS NUMBER OF GUESSES | |
| let a: u32 = 101; | |
| let m: u32 = 7; | |
| let mut need_instrut = String::new(); | |
| println!("DO YOU WANT INSTRUCTIONS?"); | |
| io::stdin() | |
| .read_line(&mut need_instrut) | |
| .expect("Failed to get input"); | |
| if need_instrut[..1].to_ascii_lowercase().eq("y") { | |
| println!("I AM THINKING OF A WHOLE NUMBER FROM 1 TO {}", a - 1); | |
| println!("TRY TO GUESS MY NUMBER. AFTER YOU GUESS, I"); | |
| println!("WILL TYPE ONE OR MORE STARS (*). THE MORE"); | |
| println!("STARS I TYPE, THE CLOSER YOU ARE TO MY NUMBER."); | |
| println!("ONE STAR (*) MEANS FAR AWAY, SEVEN STARS (*******)"); | |
| println!("MEANS REALLY CLOSE! YOU GET {} GUESSES.\n\n", m); | |
| } | |
| loop { | |
| println!("\nOK, I AM THINKING OF A NUMBER, START GUESSING.\n"); | |
| let rand_number: i32 = rand::thread_rng().gen_range(1..a) as i32; // generates a random number between 1 and 100 | |
| // GUESSING BEGINS, HUMAN GETS M GUESSES | |
| for i in 0..m { | |
| let mut guess = String::new(); | |
| println!("YOUR GUESS?"); | |
| io::stdin() | |
| .read_line(&mut guess) | |
| .expect("Failed to get input"); | |
| let guess: i32 = match guess.trim().parse() { | |
| Ok(num) => num, | |
| Err(_) => { | |
| println!("PLEASE ENTER A NUMBER VALUE.\n"); | |
| continue; | |
| } | |
| }; | |
| if guess == rand_number { | |
| print!(""); | |
| for _i in 0..50 { | |
| print!("*"); | |
| } | |
| println!("!!!"); | |
| println!("YOU GOT IT IN {} GUESSES!!! LET'S PLAY AGAIN...\n", i + 1); | |
| break; | |
| } else { | |
| match_guess(rand_number - guess); | |
| } | |
| if i == 6 { | |
| println!( | |
| "SORRY, THAT'S {} GUESSES. THE NUMBER WAS {}", | |
| m, rand_number | |
| ); | |
| } | |
| } | |
| } | |
| } | |
| fn match_guess(diff: i32) { | |
| if diff.abs() >= 64 { | |
| println!("*\n"); | |
| } else if diff.abs() >= 32 { | |
| println!("**\n"); | |
| } else if diff.abs() >= 16 { | |
| println!("***\n"); | |
| } else if diff.abs() >= 8 { | |
| println!("****\n"); | |
| } else if diff.abs() >= 4 { | |
| println!("*****\n"); | |
| } else if diff.abs() >= 2 { | |
| println!("******\n"); | |
| } else { | |
| println!("*******\n"); | |
| } | |
| } |