功能需求
- 主菜單:開始遊戲 / 退出;
- 遊戲邏輯:隨機生成 1~100 數字,玩家反覆猜測,提示「大了/小了/正確」;
- 猜中後返回主菜單,可重複遊玩。
代碼結構
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void printMenu() {
puts("********************");
puts("**** 1. 開始遊戲 ****");
puts("**** 0. 退出遊戲 ****");
puts("********************");
}
void playGame() {
srand((unsigned)time(NULL));
int target = rand() % 100 + 1;
int guess;
while (1) {
printf("請輸入猜測 (1-100): ");
scanf("%d", &guess);
if (guess > target) puts("猜大了!");
else if (guess < target) puts("猜小了!");
else { puts("恭喜猜中!"); break; }
}
}
int main() {
int choice;
while (1) {
printMenu();
printf("請選擇: ");
scanf("%d", &choice);
if (choice == 1) playGame();
else if (choice == 0) { puts("遊戲結束,再見!"); break; }
else puts("無效選項!");
}
return 0;
}
關鍵點解析
- 隨機數種子:
srand((unsigned)time(NULL)) 僅在程序啟動時調用一次,避免同一秒內多次調用產生相同序列;
- 範圍控制:
rand() % 100 + 1 生成 1~100;
- 輸入健壯性:生產代碼應檢查
scanf 返回值,防止非數字輸入導致死循環;
- 模塊化:菜單、遊戲邏輯分離,便於擴展(如難度選擇、記錄最高分)。
編譯運行
gcc guess_game.c -o guess_game
./guess_game