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

C 語言迷你專案:記憶力挑戰小遊戲

     編輯:關於C

專案簡介

一個極簡的控制台記憶力遊戲:程式隨機產生 N 位數字、顯示 1 秒後清除畫面,玩家需輸入剛才看到的數字。答對則位數 +1 繼續,答錯即結束並顯示正確答案。全程僅使用基本的循環、條件判斷,無指標、無陣列,適合 C 語言初學者練習。

遊戲規則

  1. 初始 2 位數,每關 +1 位,上限 19 位(受限於 double 精度)。
  2. 首位數字不為 0(避免前導零混淆)。
  3. 顯示 1 秒後自動清屏,進入輸入等待。
  4. 輸入錯誤即結束,顯示正確答案。

完整原始碼

#include 
#include 
#include 
#include 

void main(void) {
    int i, j;
    double k, n;

    randomize();  // 初始化亂數種子 (Turbo C 專用)

    for (i = 2; i < 20; i++) {  // 位數從 2 遞增至 19
        // 產生首位非零數字
        do {
            k = random(10);
        } while (k == 0);

        // 產生剩餘位數
        for (j = 1; j <= i; j++) {
            k = k * 10 + random(10);
        }

        clrscr();           // 清屏
        printf("%.0lf", k); // 顯示數字 (無小數點)
        sleep(1);           // 延遲 1 秒 (Turbo C: delay(1000) 或 sleep(1))
        clrscr();           // 再次清屏

        scanf("%lf", &n);   // 玩家輸入
        if (k != n) break;  // 答錯跳出
    }

    printf("\nMisremembered: %.0lf", k);
    getch();  // 等待按鍵結束
}

關鍵技術點解析

1. randomize() + random(10)

Turbo C 專用亂數函數,產生 0~9 整數。現代編譯器請改用 srand(time(NULL)) + rand() % 10。

2. double 存儲大整數

利用 double 52 位尾數可精確表示 15~16 位十進制整數的特性,以 %.0lf 格式輸出無小數點。注意:超過 15 位可能出現精度誤差,故迴圈上限設 19 較保守。

3. clrscr()、sleep()、getch()

皆為 Turbo C / DOS 環境專用函數:

  • clrscr() → 現代可用 system("cls") (Windows) 或 system("clear") (Linux/Mac)
  • sleep(1) → Sleep(1000) (Windows) 或 sleep(1) (POSIX)
  • getch() → _getch() (MSVC) 或自行實作無回顯輸入

移植建議

// 現代跨平台版本片段
#include 
#include 
#include 
#ifdef _WIN32
#include 
#define CLEAR_SCREEN() system("cls")
#define SLEEP_MS(ms) Sleep(ms)
#else
#include 
#define CLEAR_SCREEN() system("clear")
#define SLEEP_MS(ms) usleep((ms)*1000)
#endif

int main() {
    srand(time(NULL));
    // ... 邏輯同前,替換 random(10) 為 rand()%10
    // 替換 clrscr() → CLEAR_SCREEN()
    // 替換 sleep(1) → SLEEP_MS(1000)
}

延伸挑戰

  • 加入計分系統、最高分記錄(檔案 I/O)。
  • 支援自訂顯示時間、位數上限。
  • 改用字串處理突破 double 精度限制,支援百位數挑戰。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved