[Lập trình C] Guess The Number - Mini console game

Tuesday, May 25, 2021
Edit this post


Đề bài: Viết một trò chơi console hỏi tên (tối đa 20 ký tự) và yêu cầu người dùng đoán một số bí mật ngẫu nhiên bất kỳ trong khoảng từ 1 tới 20. Người dùng sẽ có tối đa 5 lần đoán. Với mỗi lần đoán, cho người dùng biết nếu số mà họ đưa ra cao hoặc thấp hơn so với con số bí mật. Nếu sau 5 lần mà người dùng vẫn đoán sai thì in ra đáp án. Nếu người dùng đoán đúng kết quả trong 5 lần đoán thì in ra câu chúc mừng.

Ví dụ chạy chương trình (trường hợp người chơi thắng):

What is your name? Phi
Hello Phi. I'm thinking of a number between 1 and 20. Could you make a guess?
Make a guess: 5
That's too low!
Make a guess: 10
That's too high!
Make a guess: 8
That's too high!
Make a guess: 6

Good job! You guessed my number in 4 guesses!


Ví dụ chạy chương trình (trường hợp người chơi thua):

What is your name? Phi
Hello Phi. I'm thinking of a number between 1 and 20. Could you make a guess?
Make a guess: 5
That's too low!
Make a guess: 5
That's too low!
Make a guess: 5
That's too low!
Make a guess: 5
That's too low!
Make a guess: 5
That's too low!

Nope! The number I was thinking of was 9!


Bên dưới là lời giải của tôi. Các bạn hãy tự mình nghiền ngẫm và hands-on coding trước khi xem lời giải nhé. Lời giải chỉ cover requirements của chương trình ở mức cơ bản nhất. Với yêu cầu nâng cao, các bạn có thể kiểm tra và bắt người dùng nhập lại nếu người dùng cố tình nhập tên có độ dài > 20 ký tự hoặc nhập một số không nằm trong khoảng từ 1 tới 20.

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#define NAME_LEN 20

int main()
{
    char name[NAME_LEN];
    
    srand(time(0));
    int secretNumber = rand() % 20 + 1;
    
    printf("What is your name? ");
    fgets(name, NAME_LEN, stdin);
    strtok(name, "\n");
    
    printf("Hello %s. I'm thinking of a number between 1 and 20. Could you make a guess?", name);
    
    int answer;
    int guesses = 0;
    do {
        ++guesses;
        printf("\nMake a guess: ");
        scanf("%d", &answer);
        
        if (answer < secretNumber)
            printf("That's too low!");
        else if (answer > secretNumber)
            printf("That's too high!");
        else
            break;
    } while (guesses < 5);
    
    if (answer == secretNumber)
        printf("\nGood job! You guessed my number in %d guesses!", guesses);
    else
        printf("\nNope! The number I was thinking of was %d!", secretNumber);

    return 0;
}

.
Xin vui lòng chờ đợi
Dữ liệu bài viết đang được tải về

BÌNH LUẬN

Cảm ơn bạn đã đọc bài viết của Cuộc Sống Tối Giản. Đây là một blog cá nhân, được lập ra nhằm mục đích lưu trữ và chia sẻ mọi thứ hay ho theo chủ quan của chủ sở hữu. Có lẽ vì vậy mà bạn sẽ thấy blog này hơi (rất) tạp nham. Mọi chủ đề đều có thể được tìm thấy ở đây, từ tâm sự cá nhân, kinh nghiệm sống, phim ảnh, âm nhạc, lập trình... Phần lớn các bài đăng trong blog này đều được tự viết, trừ các bài có tag "Sponsored" là được tài trợ, quảng cáo, hoặc sưu tầm. Để ủng hộ blog, bạn có thể share những bài viết hay tới bạn bè, người thân, hoặc có thể follow Kênh YouTube của chúng tôi. Nếu cần liên hệ giải đáp thắc mắc hoặc đặt quảng cáo, vui lòng gửi mail theo địa chỉ phipgn@gmail.com. Một lần nữa xin được cảm ơn rất nhiều!!!
© Copyright by CUỘC SỐNG TỐI GIẢN
Loading...