前言
本文為「The Rust Programming Language」語言指南的學習筆記。
做法
建立專案。
1 2
| cargo new rust-guessing-game cd rust-guessing-game
|
執行程式。
修改 src/main.rs
檔。
1 2 3 4 5 6 7 8 9 10 11
| use std::io;
fn main() { println!("請猜測一個數字!");
let mut guess = String::new();
io::stdin().read_line(&mut guess).expect("讀取失敗");
println!("你的猜測為:{}", guess); }
|
修改 Cargo.toml
檔,引入 rand
套件。
1 2
| [dependencies] rand = "0.8.3"
|
使用 cargo doc
指令開啟文件,查看 rand
套件的使用方法。
可以引用 rand::Rng
特徵,並使用 rand::thread_rng().gen_range()
方法來產生隨機的數字。
1 2 3 4 5 6 7 8 9 10 11
| use rand::Rng; use std::cmp::Ordering; use std::io;
fn main() { println!("請猜測一個數字!");
let secret_number = rand::thread_rng().gen_range(1..101);
}
|
加上 loop
關鍵字,讓使用者重複猜測。
1 2 3 4 5
| loop { let mut guess = String::new();
}
|
處理將字串解析為數字時發生的錯誤。
1 2 3 4 5 6 7
| let guess: u32 = match guess .trim() .parse() { Ok(num) => num, Err(_) => continue, };
|
最後引入 std::cmp::Ordering
枚舉,比較大小。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
| use rand::Rng; use std::cmp::Ordering; use std::io;
fn main() { println!("請猜測一個數字!");
let secret_number = rand::thread_rng().gen_range(1..101);
println!("祕密數字為:{}", secret_number);
loop { let mut guess = String::new();
io::stdin() .read_line(&mut guess) .expect("讀取失敗");
let guess: u32 = match guess .trim() .parse() { Ok(num) => num, Err(_) => continue, };
println!("你的猜測為:{}", guess);
match guess.cmp(&secret_number) { Ordering::Less => println!("太小了!"), Ordering::Greater => println!("太大了!"), Ordering::Equal => { println!("獲勝!"); break; } } } }
|
執行程式。
程式碼
參考資料