2015-04-18 5 views
0

Мне нужно сделать программу для блэкджека. Дело в том, как вы можете видеть в коде, есть петелька для генерации карт без повторений ..C Программирование integer

Если я ударил ключ он будет печатать строку: «5-алмаз» затем ударил другой ключ и, например, он печатает: «8-clover»

Итак, как мне добавить эти два вместе, не испортив код. Так как я хочу проверить значение суммы этих двух. Что мне нужно сделать?

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

Объясните свой желаемый результат, указав примеры. –

+2

Первый цикл 'for' должен быть' for (int i = 0; i <51; i ++) ', а не' for (int i = 0; i <= 51; i ++) 'и' w = rand()% 52; 'должно быть' w = rand()% 51; '. –

+3

@Cool Guy: это правильно с точки зрения программирования, но поскольку я никогда не видел игру в блэкджек с только 51 карточкой, вероятно, более целесообразно советовать о распространении карточных массивов на 52 элемента и оставить остальные, как это было ... – mfro

ответ

1

Вы должны вычислить sum значений и подсчет тузов.

Если карта является тузом, добавьте 11, если это король, королева или Джек, добавьте 10, в противном случае добавьте value.

Если sum больше 21 и вы видели Туз, вычитать 10 для каждого туза, пока не падает обратно ниже 22.

Смежные вопросы