#include <glib.h>
#include <stdio.h>
#include <locale.h>
int main(int argc, char *argv[]) {
setlocale(LC_ALL, ""); // 支持本地化字符集
gchar name[10]; // GLib 字符類型別名
g_print("您叫什麼名字?\n");
scanf("%s", name); // 簡單輸入,生產環境建議用 g_scanf 或 fgets
g_print("歡迎您,%s,這裡是 21 點遊戲!\n", name);
return 0;
}
gchar = char,g_print = 跨平台 printfsetlocale(LC_ALL, "") 讓終端正確顯示中文gcc \`pkg-config --cflags --libs glib-2.0 gthread-2.0\` 1.c -o mytestGRand *rand = g_rand_new(); // 創建隨機數生成器對象
gint card = g_rand_int_range(rand, 1, 11); // 產生 [1, 11) 即 1-10,修正為 11 含上界
g_print("%s,您抽到的是:%d\n", name, card);
g_rand_free(rand); // 釋放對象
g_print("%s,請按鍵抽牌!\n", name);
getchar(); getchar(); // 吸收換行符,等待任意鍵
GRand *rand = g_rand_new();
gint card = g_rand_int_range(rand, 1, 11);
g_print("%s,您抽到的是:%d\n", name, card);
g_rand_free(rand);
$ ./mytest
您叫什麼名字?
麥好
歡迎您,麥好,這裡是 21 點遊戲!
麥好,請按鍵抽牌!
麥好,您抽到的是:3
| 函數 | 說明 |
|---|---|
g_rand_new() | 創建隨機數生成器,內部狀態隔離,線程不安全 |
g_rand_int_range(rand, min, max) | 返回 [min, max) 區間均勻分布整數 |
g_rand_double_range(rand, min, max) | 返回浮點數範圍 |
g_rand_free(rand) | 釋放生成器資源 |
g_rand_set_seed(rand, seed) | 設置種子,便於複現 |
引入雙方輪流抽牌、點數累加、停牌邏輯、勝負判定,使用 gboolean 類型管理狀態,構建完整遊戲循環。