【发布时间】:2016-04-12 11:54:54
【问题描述】:
我的二十一点游戏差不多完成了,但我在添加卡片整数时遇到了问题。如您所见,我打印了卡片并显示了卡片的价值,第二个价值是两张卡片的总和。我只想打印总和,但由于某种原因,我无法摆脱第一张卡片的价值。庄家没有拿到他的牌,为什么?
我遇到的第二个问题是,当其中一个玩家获得一张新卡时,我希望将新卡的值添加到该玩家的第一个总和中。
void deal(const Card * const Deck, int value, int size, int size_1, int size_2){
int i, j, length;
char anotherCard[2];
char name1[30];
char name2[30];
int valueName1 = 0, valueName2 = 0, valueDealer = 0;
printf("Name player one > ");
scanf("%s", name1);
printf("Name player two > ");
scanf("%s", name2);
printf("\nWelcome %s and %s, lets begin!\n\n", name1, name2);
getchar();
printf("%s's card:\n", name1);
for (i = 0; i < size; i++){
printf("%5s of %-8s%c", Deck[i].decks, Deck[i].suits, (i + 1) % 2 ? '\t' : '\n');
valueName1 += Deck[i].value;
printf("\nvalue > %d", valueName1);
}
//Name2 deleted
//Dealer deleted
printf("\nDo %s want another card? Y/N > ", name1);
fgets(anotherCard, sizeof(anotherCard), stdin);
fflush(stdin);
printf("\n");
length = strlen(anotherCard);
for (j = 0; j < length; j++){
if (strcmp(anotherCard, "Y") == 0 || strcmp(anotherCard, "y") == 0){
for (i = 6; i < 7; i++){
printf("%5s of %-8s%c", Deck[i].decks, Deck[i].suits, (i + 1) % 2 ? '\t' : '\n');
valueName1 = Deck[i].value;
printf("value > %d", valueName1);
}
}
else
break;
}
return;
}
【问题讨论】:
-
"去掉第一张卡片的价值"。这到底是什么意思,为什么需要这样做?另外,请不要将输出作为图像发布,而是作为问题中的文本发布。如果您准确指出该输出有什么问题(例如预期输出是什么),这将有所帮助。
-
您应该在
\nvalue > %d之后添加\n,以便下一张卡片单独打印在一行上。 -
我觉得它现在看起来更好了?如果我们以马库斯的牌为例。六颗心的价值为 6,但我根本不希望它被打印出来。当马库斯得到一张新卡时,只有总和显示为值 > 16,三颗钻石我希望将值 > 3 添加到第一个值,(值 > 16)
-
我看不到你的函数在哪里打印庄家牌。
-
对不起,我删除了,所以我没有打印太多代码,我把它写成评论