このソースがわかりません
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
int card[4][13];
char total[13] = { 11, 2, 3, 4, 5, 6, 7, 8, 9, 10, 10, 10, 10 };
char *digit[13] = { "A", "2", "3", "4", "5", "6",
"7", "8", "9", "10", "J", "Q", "K" };
char *mark[4] = {
"ハート",
"ダイヤ",
"スペード",
"クローバー"
};
int drawCard(int h);
int main() {
int dealer; //ディーラーの引いたカードの合計
int player; //プレイヤーの引いたカードの合計
int draw_digit; //引いたカードの数
int draw_mark; //引いたカードのマーク
char y_n; //カードを引くか引かないかの答え
srand(time(NULL));
printf("【ブラックジャック】\n");
//ディーラーが引く
draw_mark = rand() % 4 + 1;
draw_digit = rand() % 13 + 1;
card[draw_mark-1][draw_digit-1] = 1;
dealer = total[draw_digit-1];
printf("ディーラー一枚目:%sの%s\n",
mark[draw_mark-1], digit[draw_digit-1]);
printf("他は伏せる\n\n");
//プレイヤーが引く
printf("プレイヤー一枚目:");
player = drawCard(1);
printf("プレイヤー二枚目:");
player += drawCard(1);
//ディーラー2枚目以降
do{
dealer += drawCard(0);
} while(dealer <= 16);
//プレイヤー3枚目以降
while(player < 21) {
printf("もう1枚引きますか?(y/n) > ");
scanf("%c" , &y_n);
while (getchar() != '\n') { }
if(y_n == 'y') {
player += drawCard(1);
} else if (y_n == 'n') { break; }
}
printf("\nディーラー:%d点 プレイヤー:%d点\n", dealer, player);
//勝敗の判定
if ((dealer <= 21 && player > 21) || (dealer <= 21 && dealer > player)) {
printf("ディーラーの勝ち!\n");
} else if ((player <= 21 && dealer > 21)
|| (player <= 21 && player > dealer)) {
printf("プレイヤーの勝ち!\n");
} else {
printf("引き分け\n");
}
return 0;
}
/*カードを引く関数
引数 h:カード内容表示フラグ
プレイヤーターンの時は1、ディーラーターンの時は0
戻り値 r:引いたカードの点数
*/
int drawCard(int h) {
int draw_mark, draw_digit; //引いたカードのマークと数
int r; //引いたカードの点数
char y_n; //カードを11として計算するかどうかの答え
do {
draw_mark = rand() % 4 + 1;
draw_digit = rand() % 13 + 1;
} while (card[draw_mark-1][draw_digit-1]);
card[draw_mark-1][draw_digit-1] = 1;
if(h) {
printf("%sの%s\n", mark[draw_mark-1], digit[draw_digit-1]);
}
if(h && draw_digit == 1) { //プレイヤーターンで引いた数が1のとき
do {
printf("11として計算しますか?(y/n) > ");
scanf("%c" , &y_n);
while (getchar() != '\n') { }
if(y_n == 'y') { r = total[draw_digit-1]; }
else if (y_n == 'n') { r = 1; }
} while(!(y_n == 'y' || y_n == 'n'));
} else { r = total[draw_digit-1]; }
return r;
}
この「char total[13] = { 11, 2, 3, 4, 5, 6, 7, 8, 9, 10, 10, 10, 10 };」の部分がなぜchar型なのかとなぜ、必要なのかです
後もう一つ} while (card[draw_mark-1][draw_digit-1]);のー1はなぜですか?教えてください、おねがいします
お礼
ありがとうございました。