這是一個經典的 C 語言練習專案:實作一個簡單的 21 點(Blackjack)計牌程式。透過鍵盤輸入牌名,程式自動計算當前計數,幫助玩家掌握牌局優勢。程式展示了基本的輸入處理、switch-case 邏輯、陣列操作與迴圈控制。
#include <stdio.h>
#include <stdlib.h>
int main() {
char card_name[3];
int count = 0;
do {
puts("請輸入牌名(A, 2-10, J, Q, K,輸入 X 結束):");
scanf("%2s", card_name);
int val = 0;
switch (card_name[0]) {
case 'K':
case 'Q':
case 'J':
val = 10;
break;
case 'A':
val = 11;
break;
case 'X':
case 'x':
continue; // 直接進入下一輪迴圈,不更新計數
default:
val = atoi(card_name);
if ((val < 1) || (val > 10)) {
puts("無法識別的數值,請重新輸入!");
continue;
}
}
// Hi-Lo 計牌邏輯
if ((val > 2) && (val < 7)) {
count++; // 2-6: +1
} else if (val == 10) {
count--; // 10, J, Q, K: -1
}
// A(11) 和 7,8,9 不計分
printf("當前計數:%d\n", count);
} while (card_name[0] != 'x' && card_name[0] != 'X');
return 0;
}
請輸入牌名:
5
當前計數:1
請輸入牌名:
K
當前計數:0
請輸入牌名:
3
當前計數:1
請輸入牌名:
A
當前計數:1
請輸入牌名:
x
這個小專案雖然簡單,但涵蓋了 C 語言核心語法,是進階學習演算法與遊戲邏輯的絕佳起點。