2016-01-07 19 views
-2

我几乎完成了我的二十一点游戏,但我在添加整数卡时遇到了问题。正如你所看到的,我打印这些卡片并显示卡片的价值,第二个值是两张卡片的总和。我只是想打印总和,但由于某种原因,我无法摆脱第一张牌的价值。而且经销商没有得到他的卡片,为什么?我不知道如何添加整数并在我的二十一点游戏中打印它们,C

我遇到的第二个问题是,当其中一名球员获得一张新牌时,我希望将该新牌值添加到该球员的第一笔总和中。

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; 
} 
+0

“摆脱第一张牌的价值”。这是什么意思,为什么需要这样做?另外,请不要将输出内容显示为图像,而应将其作为您问题中的文本。如果您明确指出该输出的错误(例如预期输出是什么),这将有所帮助。 – kaylum

+0

你应该在'\ nvalue>%d'后面加'\ n',这样下一张卡片就可以打印在它自己的一行上。 – Barmar

+0

我觉得现在看起来好多了?如果我们以马库斯的卡为例。 六颗心有价值6,但我不希望它被打印。当马库斯得到一张新牌时,只有总和值> 16 ,三个钻石我要那个值> 3加到第一个值上,(值> 16) – Mallom

回答

1

如果你只想打印最后总,动议printf线外循环。您还应该为每张卡片\n启动printf,以便卡片将显示在单独的行中。

printf("%s's card:\n", name1); 
for (i = 0; i < size; i++){ 
    printf("\n%5s of %-8s%c", Deck[i].decks, Deck[i].suits, (i + 1) % 2 ? '\t' : '\n'); 
    valueName1 += Deck[i].value; 
} 
printf("\nvalue > %d", valueName1); 
+0

太棒了!那工作。但是,如何将Marcus获得的新卡添加到第一个值?我想增加值大于3的值> 16 – Mallom

+0

每当你给他另一个vard时,就像在循环中一样'valueName1 + = Deck [i] .value;'。 – Barmar

+0

我不明白你为什么要像'for(i = 6; i <7; i ++)'这样做一个循环。这将总是循环一次,所以有什么意义? – Barmar

相关问题