comnic's Dev&Life

[Rust 예제] 숫자 맞추기 게임 본문

Rust

[Rust 예제] 숫자 맞추기 게임

comnic 2023. 12. 2. 01:22
반응형

1~100까지 랜덤한 숫자를 생성하고, 생성된 숫자를 맞추는 게임입니다.
추측하는 숫자를 입력하면, 랜덤 숫자가 큰지, 작은지 알려 줍니다.
얼마나 빨리 맞출수 있는 지 확인 해 보세요!!! ^^

상세 설명은 주석으로 달아 두었습니다.

// rand::Rng 트레이트를 사용하여 난수 생성을 위한 라이브러리를 가져옵니다.
use rand::Rng;

fn main() {
    // 시도 횟수를 기록하는 변수를 선언하고 초기화합니다.
    let mut try_num = 1;

    // 1에서 100까지의 난수를 생성하여 secret_number에 할당합니다.
    let secret_number = rand::thread_rng().gen_range(1..101);

    // 게임의 시작 메시지를 출력합니다.
    println!("1에서 100까지 숫자를 맞춰보세요!");

    // 무한 루프를 시작합니다.
    loop {
        // 사용자에게 숫자를 입력하도록 안내하는 메시지를 출력합니다.
        println!("[{}번째 시도]숫자인지 입력하세요!", try_num);

        // 사용자 입력을 받기 위한 변수를 선언하고, 사용자가 입력한 값을 저장합니다.
        let mut guess = String::new();
        std::io::stdin().read_line(&mut guess)
            .expect("Failed to read line"); // 사용자 입력 오류를 처리합니다.

        // 입력받은 문자열을 숫자로 변환하고, 변환이 실패한 경우 무시하고 반복문을 다시 시작합니다.
        let guess: u32 = match guess.trim().parse() {
            Ok(num) => num,
            Err(_) => continue,
        };

        // 입력한 숫자를 출력합니다. (디버깅용 코드)
        // println!("입력한 숫자: {}", guess);

        // 입력한 숫자와 비밀 숫자를 비교하고, 결과에 따라 메시지를 출력합니다.
        match guess.cmp(&secret_number) {
            std::cmp::Ordering::Less => println!("입력한 숫자보다 큽니다."),
            std::cmp::Ordering::Greater => println!("입력한 숫자보다 작습니다."),
            std::cmp::Ordering::Equal => {
                // 정답을 맞춘 경우 축하 메시지를 출력하고, 무한 루프를 종료합니다.
                println!("정답!");
                break;
            }
        }

        // 시도 횟수를 1 증가시킵니다.
        try_num += 1;

        // 한 번의 시도가 끝날 때마다 빈 줄을 출력하여 가독성을 높입니다.
        println!("");
    }
}

 

반응형

'Rust' 카테고리의 다른 글

[Rust] 3. 기본 문법과 데이터 타입  (0) 2023.12.03
[Rust] 2-1. 패키지 관리자 Util(Cargo-edit)  (2) 2023.12.02
[Rust] 2. 패키지 관리자(Cargo)  (0) 2023.12.01
[Rust] 1. 소개와 설치  (1) 2023.11.30
[Rust]소개와 연재 시작  (1) 2023.11.30
Comments