【发布时间】:2015-04-18 08:01:16
【问题描述】:
我需要制作一个二十一点程序。问题是,正如您在代码中看到的那样,有一个循环用于生成卡片而不重复......
如果我按下一个键,它会打印如下一行: “五钻” 然后按另一个键,例如它打印: 《八叶草》
那么如何在不弄乱代码的情况下将这两者相加。因为我想检查这两者之和的值。我需要做什么?
int cards()
{
int card[51];
int used[51];
int x = 0;
int playerhand = 0;
int dealerhand = 0;
int sum = 0;
while(!kbhit())
x++;
srand(x % 100000);
for(int i = 0; i <= 51; i++)
used[i] = 0;
for(;;)
{
int w;
do
{
w = rand() % 52;
}
while(used[w] == 1);
used[w] = 1;
int value = w % 13 + 1;
if(value >= 2 && value <= 10)
printf("%d-", value);
else
{
if(value == 1)
printf("Ace ");
if(value == 11)
printf("Jack ");
if(value == 12)
printf("Queen ");
if(value == 13)
printf("King ");
}
int suit = (int)(w / 13);
if(suit == 0)
printf("Clover");
if(suit == 1)
printf("Spade");
if(suit == 2)
printf("Heart");
if(suit == 3)
printf("Diamond");
printf("\n");
getch();
}
}
【问题讨论】:
-
通过举例说明你想要的输出。
-
第一个
for循环应该是for(int i=0;i<51;i++),而不是for(int i=0;i<=51;i++),w=rand()%52;应该是w=rand()%51;。 -
@Cool Guy:从编程的角度来看是正确的,但由于我从未见过只有 51 张牌的二十一点游戏,建议将牌数组扩展到 52 个元素并保留其余元素可能更合适原来如此……
-
如果程序从卡片随机发生器打印两个值,我只需要知道如何添加两个值。就像我写的一样。