rust學習(三)編寫一個簡單的猜數小游戲
開始
老樣子我們先利用caogo來創建新項目
cargo new guessing_gamecd guessing_game
ps: 我們學過其他編程語言時,一般都編寫過這個小例子...
編寫代碼(簡單版本)
use std::io; // 使用io輸入輸出庫
fn main() {
// 調用micro
println!("Guess the number!");
println!("Please input your guess.");
// rust中變量默認是immutable的,要使得mutable需要使用mut關鍵字來聲明
// 利用let創建一個可變變量
let mut guess_number: String = String::new();
io::stdin() // 獲取終端輸入句柄
// & 表示引用,允許多處代碼訪問同一處數據,無需在內存中多次拷貝
// &引用默認是不可變的,可以加mut使其可變
.read_line(&mut guess_number) // 獲取用戶輸入的內容并追加到字符串變量guess_number中
// read_line會返回一個類型為Result的值
// Result是一種枚舉類型,每種可能的狀態被稱為枚舉成員
.expect("Failed to read line");
println!("You guessed: {guess_number}");
}
Note: rust中變量默認是不可變的,如果之后需要修改變量的值,需要使用mut關鍵字來使其可變
復雜版本
use rand::Rng; // Rng是一個trait
use std::cmp::Ordering; // 引入Ordering枚舉
use std::io; // 引入io輸入輸出庫
fn main() {
println!("Guess the number!");
// 引入隨機數
// 范圍在1-100之間
// 范圍表達式start..=end 上下邊界均為閉區間
let secret_number: u32 = rand::thread_rng().gen_range(1..=100);
// println!("The secret number is: {}", secret_number);
// 猜了幾次
let mut guess_count: u32 = 0;
// loop關鍵字創建了一個死循環
loop {
println!("Please input your guess: ");
// 確保立即刷新輸出
use std::io::Write;
io::stdout().flush().unwrap();
// rust中變量默認是immutable的,要使得mutable需要使用mut關鍵字來聲明
// 利用let創建一個可變變量
let mut guess_number = String::new();
io::stdin() // 獲取終端輸入句柄
// & 表示引用,允許多處代碼訪問同一處數據,無需在內存中多次拷貝
// &引用默認是不可變的,可以加mut使其可變
.read_line(&mut guess_number) // 獲取用戶輸入的內容并追加到字符串變量guess_number中
// read_line會返回一個類型為Result的值
// Result是一種枚舉類型,每種可能的狀態被稱為枚舉成員
.expect("Failed to read line");
println!("You guessed: {guess_number}");
// shadowing遮蔽之前的變量guess_number
// shadowing功能經常用于將一個類型的值轉換為另一個類型的值
// 將guess_number從字符串類型轉換為整數類型
let guess_number: u32 = match guess_number.trim().parse() {
Ok(num) => num,
Err(_) => continue,
};
guess_count += 1;
// 一個match表達式由分支構成
match guess_number.cmp(&secret_number) {
Ordering::Less => println!("?? Too small!"),
Ordering::Greater => println!("?? Too big!"),
Ordering::Equal => {
println!("?? You got it! The number was {secret_number}.");
println!("?? You guessed {guess_count} times.\n");
break; // 用戶猜對時,結束循環。退出游戲
}
}
}
}
對了我閱讀的書籍是《The Rust Programming Language》,代碼幾乎和官網的一致,有時候也會根據自己的想法適當修改代碼~~~

浙公網安備 33010602011771號