首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C >> 關於C

C語言專案實戰:猜數字遊戲完整實作

     編輯:關於C

互動式猜數字遊戲 - C語言完整實作

猜數字遊戲是初學者練習隨機數生成、迴圈控制、使用者互動的絕佳專案。本文提供結構化、模組化的完整實作。

完整程式碼

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

// 選單顯示函數
void showMenu() {
    printf("*********************\n");
    printf("歡迎進入猜數字遊戲系統!\n");
    printf("選擇:\n");
    printf("1. 開始遊戲\n");
    printf("2. 退出系統\n");
    printf("*********************\n");
}

// 遊戲核心邏輯
void playGame(int target) {
    int guess;
    int attempts = 0;
    
    printf("\n--- 遊戲開始:請猜 1-100 之間的數字 ---\n");
    
    while (1) {
        printf("輸入你猜的數字: ");
        if (scanf("%d", &guess) != 1) {
            printf("輸入無效,請輸入整數!\n");
            while (getchar() != '\n'); // 清除輸入緩衝區
            continue;
        }
        
        attempts++;
        
        if (guess < target) {
            printf("太小了!再試一次\n");
        } else if (guess > target) {
            printf("太大了!再試一次\n");
        } else {
            printf("恭喜你,猜對了!答案是 %d\n", target);
            printf("你總共猜了 %d 次\n", attempts);
            break;
        }
    }
}

int main() {
    // 初始化隨機種子
    srand((unsigned int)time(NULL));
    
    int choice;
    
    while (1) {
        showMenu();
        printf("請輸入選項 (1-2): ");
        
        if (scanf("%d", &choice) != 1) {
            printf("輸入無效!\n");
            while (getchar() != '\n');
            continue;
        }
        
        switch (choice) {
            case 1: {
                int target = rand() % 100 + 1; // 1-100
                playGame(target);
                break;
            }
            case 2:
                printf("感謝遊玩,再見!\n");
                return 0;
            default:
                printf("無效選項,請輸入 1 或 2\n");
        }
        printf("\n");
    }
    
    return 0;
}

關鍵技術點解析

1. 隨機數生成
srand(time(NULL)) 以當前時間作為種子,確保每次執行產生不同隨機序列。rand() % 100 + 1 產生 1-100 的整數。

2. 模組化設計
將選單顯示、遊戲邏輯拆分為獨立函數,符合單一職責原則,提升程式碼可讀性與維護性。

3. 輸入驗證與緩衝區清理
使用 scanf 回傳值檢查輸入有效性,並用 while(getchar() != '\n') 清除錯誤輸入殘留的換行符,避免無限迴圈。

4. 遊戲統計
新增 attempts 計數器,記錄玩家猜測次數,增加遊戲趣味性。

進階擴展建議

  • 新增難度選項(簡單/普通/困難),調整數字範圍
  • 記錄最高分(最少猜測次數)到檔案
  • 加入「提示功能」(如:數字是奇數/偶數、質數等)
  • 實作雙人對戰模式
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved