2016-01-07 36 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

相關問題