ブログ

読んで思い出す。忘れるために書く

Rust で「数当てゲーム」を作った

本記事の内容は Programming a Guessing Game に同じ

ゲームの内容としては:

  • 最初に 1 〜 100 までの秘密の数値がランダムに選ばれる
  • ユーザは数値を推測して入力
  • 入力された値が外れなら、ヒントとして 正解よりも値が大きいか小さいか教える
  • 当てるまでループする

というもの

実行結果とソースコード

実行結果

f:id:innocent-zero:20190601171855p:plain
数当てゲームを実行したところ

ソースコード

use std::io;
use std::cmp::Ordering;
use rand::Rng;

fn main() {
    println!("Guess the number!");

    let secret_number = rand::thread_rng().gen_range(1, 100);

    println!("Hint: the number of range is 1-100.");

    //
    // ループ処理開始
    //
    loop {
        // println!("The secret number is: {}", secret_number); // For debug.

        println!("Please input your guess.");

        let mut guess = String::new();

        io::stdin().read_line(&mut guess)
            .expect("Failed to read line");

        // ユーザからの入力文字列を数値に変換
        let guess: u32 = match guess.trim().parse() {
            Ok(num) => num,
            Err(_num) => {
                println!("\nError: {}", _num);
                println!("Error: Please input number\n");
                continue
            },
        };


        println!("You gussed: {}", guess);
        println!("\n");

        // 入力値と正解とを比較
        match guess.cmp(&secret_number) {
            Ordering::Less      => println!("Too small!"),
            Ordering::Greater   => println!("Too big!"),
            Ordering::Equal     => {
                println!("You win!");
                break;
            }
        }

        println!("");
    }
}

Link