C 語言初學教材 - 第二章 來玩猜數字吧

設計各種與使用者互動的程式中,最有趣的莫過與遊戲了,我們來寫個簡單的猜數字遊戲吧!

#include <stdio.h>

int main(void)
{
    int answer = 3;
    int guess;
    
    printf("請猜一個數字 0 到 9: ");
    scanf("%d", &guess);
    
    if (guess == answer) {
        printf("猜對囉!\n");
    }
    else {
        printf("猜錯囉!答案是 %d\n", answer);
    }
    
    return 0;
}

/* 《程式語言教學誌》的範例程式
    http://pydoing.blogspot.com/
    檔名:gn1.c
    功能:簡單的猜數字遊戲
    作者:張凱慶
    時間:西元2010年7月 */


我們一共宣告了兩個變數,變數 answer 直接指派給值 3 作為答案,變數 guess 作為儲存使用者所猜數字的位置。程式很簡單,接受使用者輸入後,第 11 行判斷使用者所猜數字是否是否與答案相符
if (guess == answer) {
    printf("猜對囉!\n");
}
else {
    printf("猜錯囉!答案是 %d\n", answer);
}


若相符,印出猜對的序息,不相符就印出猜錯訊息附答案。來編譯玩看看吧!



嗯,自己設計的自己知道答案,不是很有趣,我們再來設計一個不是先設定好答案的猜數字遊戲唄!
#include <stdio.h>
#include <time.h>

int main(void)
{
    int answer = (int) time(NULL);
    int guess;
    
    answer %= 10;
    printf("請猜一個數字 0 到 9: ");
    scanf("%d", &guess);
    
    if (guess == answer) {
        printf("猜對囉!\n");
    }
    else {
        printf("猜錯囉!答案是 %d\n", answer);
    }
    
    return 0;
}

/* 《程式語言教學誌》的範例程式
    http://pydoing.blogspot.com/
    檔名:gn2.c
    功能:簡單的猜數字遊戲
    作者:張凱慶
    時間:西元2010年7月 */


概念很簡單,就是從標準函數庫 time.h 的函數 time() 取得現在的總秒數,然後將其取除以 10 的餘數,這樣我們就會得到一個 0 到 9 之間的整數,以此整數作為遊戲的答案。


再來編譯執行玩玩看吧



嗯,如果猜錯還可以追答案,這樣遊戲是不是有趣一點了呢?


問題與討論
  1. 將遊戲改成猜 0 到 24 之間的數字。
  2. 承上例,假如希望猜的範圍為 1 到 25 都是正整數,那麼該如何調整呢?
  3. 承上例,把原本顯示答案的部份改成顯示比答案大,或是比答案小。
  4. 承上例,如果猜錯,再加入提示訊息是否接近答案,例如正負 5 以內就印出「不錯喔!很接近了」,超過 5 就印出「還很遠,再加把勁!」。





沒有留言: