C言語で、ブラックジャックを作っているのですが、ディーラーが絶対に勝つようにカスタマイズしたいのですが、できません。。
ソースコードは以下のようになります。どうかよろしくお願いします。
C
1#include <stdio.h> 2#include <stdlib.h> 3#include <time.h> 4 5int hit_card(int); 6 7main() { 8 int total[2]; //カードの合計 9 char y_n; //カードを引くか引かないかの答え 10 11 srand(time(NULL)); 12 printf("【ブラックジャック】\n"); 13 14 //ディーラーが引く 15 hit_card(0); 16 total[0] = hit_card(0); 17 //プレイヤーが引く 18 hit_card(1); 19 total[1] = hit_card(1); 20 21 //プレイヤー3枚目以降 22 while (total[1] < 21) { 23 printf("もう1枚引きますか?(y/n) > "); 24 scanf("%c" , &y_n); 25 while (getchar() != '\n') { } 26 if (y_n == 'y') { 27 total[1] = hit_card(1); 28 } else if (y_n == 'n') { 29 break; 30 } 31 } 32 33 //ディーラー3枚目以降 34 while (total[0] < 17) { 35 total[0] = hit_card(0); 36 } 37 38 printf("\nディーラー:%d点 プレイヤー:%d点\n", total[0], total[1]); 39 40 //勝敗の判定 41 if ((total[0] < 22 && total[0] > total[1]) || total[1] > 21) { 42 printf("ディーラーの勝ち!\n"); 43 } else if (total[0] == total[1]) { 44 printf("引き分け\n"); 45 } else { 46 printf("プレイヤーの勝ち!\n"); 47 } 48} 49 50/*カードを引く関数 51引数 tern :ターンフラグ(ディーラー時は0、プレイヤー時は1) 52戻り値 total:引いたカードの合計点数 53*/ 54int hit_card(int tern) { 55 static char name[2][11] = { "ディーラー", "プレイヤー" }; 56 static char draw_mark[4][11] = { "ハート", "ダイヤ", "スペード", "クローバー" }; 57 static char draw_digit[13][3] = { "A", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K" }; 58 static int score[13] = { 11, 2, 3, 4, 5, 6, 7, 8, 9, 10, 10, 10, 10 }; 59 static int card[4][13]; //使用カード履歴 60 static int total[2] = { 0, 0 }; //引いたカードの合計点数 61 static int cnt[2] = { 0, 0 }; //引いたカードの枚数 62 static int a[2] = { 0, 0 }; //引いたAの枚数 63 static int hole_mark, hole_digit; //伏せたカードのマークと数 64 int mark, digit; //引いたカードのマークと数 65 66 //引くカード決め 67 do { 68 mark = rand() % 4; 69 digit = rand() % 13; 70 } while (card[mark][digit]); 71 card[mark][digit] = 1; 72 cnt[tern]++; 73 if (digit == 0) { 74 a[tern]++; 75 } 76 77 //引いたカード表示 78 if (tern == 0 && cnt[tern] == 3) { 79 printf("%s%d枚目:%sの%s(伏せカード)\n", name[tern], cnt[tern]-1, draw_mark[hole_mark], 80 draw_digit[hole_digit]); 81 } 82 if (tern == 0 && cnt[tern] == 2) { 83 printf("%s%d枚目:(伏せ)\n", name[tern], cnt[tern]); 84 hole_mark = mark; 85 hole_digit = digit; 86 } else { 87 printf("%s%d枚目:%sの%s\n", name[tern], cnt[tern], draw_mark[mark], draw_digit[digit]); 88 } 89 90 //合計点数計算 91 total[tern] += score[digit]; 92 if (total[tern] > 21 && a[tern] > 0) { 93 total[tern] -= 10; 94 a[tern]--; 95 } 96 97 return total[tern]; 98} 99
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。