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

GLib 實戰:從零構建 21 點遊戲(一)——歡迎界面與隨機抽牌

     編輯:關於C語言

遊戲規則

  • 雙方輪流抽取 1-11 隨機數(模擬撲克點數)
  • 可選擇停止抽牌
  • 點數和 > 21 爆牌輸;≤ 21 點數大者勝;均 ≤ 21 且相等為平局

第一步:歡迎玩家

#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 = 跨平台 printf
  • setlocale(LC_ALL, "") 讓終端正確顯示中文
  • 編譯:gcc \`pkg-config --cflags --libs glib-2.0 gthread-2.0\` 1.c -o mytest

第二步:引入隨機數

GRand *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

GLib 隨機數 API 小結

函數說明
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 類型管理狀態,構建完整遊戲循環。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved