Original source downloaded from Vintage Basic
+Conversion to Rust
+diff --git a/82_Stars/rust/Cargo.toml b/82_Stars/rust/Cargo.toml index 50801494..439dcb0e 100644 --- a/82_Stars/rust/Cargo.toml +++ b/82_Stars/rust/Cargo.toml @@ -1,9 +1,2829 @@ -[package] -name = "stars" -version = "0.1.0" -edition = "2021" -# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html -[dependencies] -rand = "0.8.3" \ No newline at end of file + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +| + | [package] | +
| + | name = "stars" | +
| + | version = "0.1.0" | +
| + | edition = "2021" | +
| + | + | +
| + | # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html | +
| + | + | +
| + | [dependencies] | +
| + | rand = "0.8.3" | +
Original source downloaded from Vintage Basic
+Conversion to Rust
+| + | 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"); | +
| + | } | +
| + | } | +