C言語は自動的にカードを発行するプログラムを実現します。
C言語は自動的にカードを発行します。参考にしてください。具体的な内容は以下の通りです。
トランプのセットは52枚あります。ブリッジをする時は4人に分けてください。自動発行の作業を完了するためのプログラムを設計してください。要求:スペードはS(Spaces)で表し、ハートはH(Hearts)で表し、ダイヤはD(Diamonds)で表し、梅はC(Clubs)で表します。
分析:
配列表現のトランプを設定する
配列表現プレイヤーを設定する
トランプに特定の標識をつけます。結果を得たら、自分の手の中のスペードにはどんなものがありますか?ブロックには何がありますか?
初歩的な考え:
4つの文字配列をセットして梅の花牌を4つ保存し、4つの文字配列を設定して4人のプレイヤーが割り当てた牌を表します。
1枚のカードをランダムに4人のプレイヤーに送ります。プレイヤーの持ち札数が13に達したら、もうこのプレイヤーカードに割り当てません。
コードの展示:
トランプのセットは52枚あります。ブリッジをする時は4人に分けてください。自動発行の作業を完了するためのプログラムを設計してください。要求:スペードはS(Spaces)で表し、ハートはH(Hearts)で表し、ダイヤはD(Diamonds)で表し、梅はC(Clubs)で表します。
分析:
配列表現のトランプを設定する
配列表現プレイヤーを設定する
トランプに特定の標識をつけます。結果を得たら、自分の手の中のスペードにはどんなものがありますか?ブロックには何がありますか?
初歩的な考え:
4つの文字配列をセットして梅の花牌を4つ保存し、4つの文字配列を設定して4人のプレイヤーが割り当てた牌を表します。
1枚のカードをランダムに4人のプレイヤーに送ります。プレイヤーの持ち札数が13に達したら、もうこのプレイヤーカードに割り当てません。
コードの展示:
void mycode_13()
{
srand(unsigned(time(NULL)));
/* */
char S[13] = { '2', '3', '4', '5', '6', '7', '8', '9', 'T', 'J', 'Q', 'K', 'A' };
char H[13] = { '2', '3', '4', '5', '6', '7', '8', '9', 'T', 'J', 'Q', 'K', 'A' };
char D[13] = { '2', '3', '4', '5', '6', '7', '8', '9', 'T', 'J', 'Q', 'K', 'A' };
char C[13] = { '2', '3', '4', '5', '6', '7', '8', '9', 'T', 'J', 'Q', 'K', 'A' };
/*4 */
char player1[13], player2[13], player3[13], player4[13];
int p1 = 0, p2 = 0, p3 = 0, p4 = 0;
distribution(S, player1, player2, player3, player4, &p1, &p2, &p3, &p4);
distribution(H, player1, player2, player3, player4, &p1, &p2, &p3, &p4);
distribution(D, player1, player2, player3, player4, &p1, &p2, &p3, &p4);
distribution(C, player1, player2, player3, player4, &p1, &p2, &p3, &p4);
puts(" ");
for (int i = 0; i < 13; i++)
printf("%c ", player1[i]);
putchar('
');
for (int i = 0; i < 13; i++)
printf("%c ", player2[i]);
putchar('
');
for (int i = 0; i < 13; i++)
printf("%c ", player3[i]);
putchar('
');
for (int i = 0; i < 13; i++)
printf("%c ", player4[i]);
}
void distribution(char * S_H_D_C, char * player1, char * player2, char * player3, char * player4, int *p1, int *p2, int *p3, int *p4)
{
static int h = 1;
int r;
int a = *p1, b = *p2, c = *p3, d = *p4;
for (int i = 0; i < 13; i++)
{
r = (rand() % 4) + 1;
while ((r == 1 && (*p1) == 13) || (r == 2 && (*p2) == 13) || (r == 3 && (*p3) == 13) || (r == 4 && (*p4) == 13))
r = (rand() % 4) + 1;
switch (r)
{
case 1:
player1[(*p1)++] = S_H_D_C[i];
break;
case 2:
player2[(*p2)++] = S_H_D_C[i];
break;
case 3:
player3[(*p3)++] = S_H_D_C[i];
break;
case 4:
player4[(*p4)++] = S_H_D_C[i];
break;
default:
break;
}
}
switch (h++)
{
case 1:
printf(" :
");
break;
case 2:
printf(" :
");
break;
case 3:
printf(" :
");
break;
case 4:
printf(" :
");
break;
}
printf("Player1:");
for (int i = a; i < (*p1); i++)
printf("%c ", player1[i]);
putchar('
');
printf("Player2:");
for (int i = b; i < (*p2); i++)
printf("%c ", player2[i]);
putchar('
');
printf("Player3:");
for (int i = c; i < (*p3); i++)
printf("%c ", player3[i]);
putchar('
');
printf("Player4:");
for (int i = d; i < (*p4); i++)
printf("%c ", player4[i]);
putchar('
');
}
次のコードは、誰かが13枚のカードを手に入れた後、カードを取らないことを保証します。
r = (rand() % 4) + 1;
while ((r == 1 && (*p1) == 13) || (r == 2 && (*p2) == 13) || (r == 3 && (*p3) == 13) || (r == 4 && (*p4) == 13))
r = (rand() % 4) + 1;
以上が本文の全部です。皆さんの勉強に役に立つように、私たちを応援してください。