fork(2) download
  1. #include <iostream>
  2. #include <cstring>
  3. #include <cstdlib>
  4. using namespace std;
  5. static int GetCard = 0;
  6. enum Mast {peaks, worms, diamonds, baptize, nillcard};
  7. ///////////////////////////////////////
  8. const int MAX1 = 36;
  9. const int COL = 4;
  10. //-------------------------------------
  11. class Card
  12. {
  13. public:
  14. Mast mast;
  15. unsigned int numb;
  16. void card_display()const //Выводим на экран карту
  17. {
  18. cout << " " << numb << " ";
  19. switch(mast)
  20. {
  21. case (peaks): cout << "Пики"; break;
  22. case (worms): cout << "Черв"; break;
  23. case (diamonds): cout << "Бубн"; break;
  24. case (baptize): cout << "Крес"; break;
  25. case (nillcard): cout << "NILL"; break;
  26. }
  27. }
  28. };
  29. //-------------------------------------
  30. class Deck
  31. {
  32. private:
  33. Card deck[MAX1];
  34. public:
  35. void deck_gen() //Гененрируем колоду карт
  36. {
  37. Mast m = peaks;
  38. int n = 6;
  39. for(int i = 0, j = 0; i < MAX1; i++)
  40. {
  41. deck[i].numb = n++;
  42. deck[i].mast = m;
  43. if(i%(MAX1/COL) == 0)
  44. {
  45. n=6;
  46. m = (Mast)j;
  47. ++j;
  48. }
  49. }
  50. }
  51. void deck_mix() //Мешаем колоду
  52. {
  53. for(int i = 0; i < MAX1; i++)
  54. {
  55. Card temp = deck[i];
  56. int ran = rand()%MAX1;
  57. deck[i] = deck[ran];
  58. deck[ran] = temp;
  59. }
  60. }
  61. void deck_display()const //Вывод на экран колоду
  62. {
  63. cout << endl;
  64. for(int i = 0; i < MAX1; i++)
  65. {
  66. //Выводим по одной карте
  67. deck[i].card_display();
  68. //По 9 карт в строке
  69. if((i+1)%(MAX1/COL) == 0)
  70. cout << endl;
  71. }
  72. cout << endl;
  73. }
  74. Card deck_give_card() //Забор верхней карты из колоды
  75. {
  76. static int dgc = MAX1-1;
  77. Card temp;
  78. temp.mast = deck[dgc].mast;
  79. temp.numb = deck[dgc].numb;
  80. deck[dgc].mast = nillcard;
  81. deck[dgc].numb = 0;
  82. dgc--;
  83. return temp;
  84. }
  85. };
  86. //-------------------------------------
  87. class Pl
  88. {
  89. private:
  90. Card PlDeck[MAX1];
  91. public:
  92. void pl_first_get_card(Deck d1) //Раздача карт
  93. {
  94. for(int i = 0; i < 6; i++)
  95. {
  96. PlDeck[i] = d1.deck_give_card();
  97. }
  98. for(int i = 6; i < MAX1; i++)
  99. {
  100. PlDeck[i].mast = nillcard;
  101. PlDeck[i].numb = 0;
  102. }
  103. }
  104. void pl_get_card(Deck &d1) //Получаем карты
  105. {
  106. while(sizeof(PlDeck) < 6)
  107. {
  108. PlDeck[GetCard] = d1.deck_give_card();
  109. GetCard++;
  110. }
  111. }
  112. void pl_display()const //Показать карты
  113. {
  114. cout << "Your cards: \n";
  115. for(int i = 0; i < MAX1; i++)
  116. {
  117. if(PlDeck[i].mast == nillcard) break;
  118. PlDeck[i].card_display();
  119. }
  120. cout << "\n##################################\n";
  121. }
  122. };
  123. ///////////////////////////////////////
  124. int main() {
  125. Deck d1;
  126. Pl pl1;
  127. d1.deck_gen();
  128. d1.deck_mix();
  129. d1.deck_display();
  130. pl1.pl_first_get_card(d1);
  131. pl1.pl_display();
  132. return 0;
  133. }
Success #stdin #stdout 0s 3412KB
stdin
Standard input is empty
stdout
 6 Бубн 7 Пики 14 Пики 7 Бубн 10 Пики 6 Пики 6 Черв 9 Черв 8 Бубн
 12 Крес 10 Черв 9 Крес 11 Пики 8 Черв 10 Бубн 11 Черв 13 Черв 14 Черв
 10 Крес 7 Крес 13 Крес 11 Крес 9 Бубн 13 Пики 13 Бубн 12 Черв 12 Бубн
 7 Черв 6 Крес 6 Пики 9 Пики 11 Бубн 14 Бубн 8 Пики 8 Крес 12 Пики

Your cards: 
 12 Пики 8 Крес 8 Пики 14 Бубн 11 Бубн 9 Пики
##################################