Advertisement
kiraventom

Hearthstone Friendly Arena 2.0 beta

Jan 3rd, 2018
210
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 7.00 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <math.h>
  3. #include <locale.h>
  4. #include <windows.h>
  5. #include <stdlib.h>
  6. #include <conio.h>
  7.  
  8. // Прототипы функций
  9. void Localize ();
  10. void Random ();
  11. int getClassArray (int *);
  12. int getClassInput (int *);
  13. int putChosenClass ();
  14. int getRarityQuantities (int *);
  15. int putRarityQuantities (int *, int);
  16. int CardRandomizer (int, int, int *, int *, int);
  17. int BuildDeck (int *, int *, int *);
  18. int ShowDeck (int *, int *);
  19.  
  20. void Localize (){
  21.     setlocale(LC_ALL, "Russian");
  22.     SetConsoleCP(1251);
  23.     SetConsoleOutputCP(1251);
  24. }
  25.  
  26. void Random (){
  27.     srand(time(NULL));
  28. }
  29.  
  30. int getClassArray (int *Pointer){
  31.     char *ClassArray[] = {"Воин", "Шаман", "Разбойник", "Паладин", "Охотник", "Друид", "Чернокнижник", "Маг", "Жрец"};
  32.     puts ("Выберите класс:");
  33.     char ClassNumbers[3]; unsigned i, j;
  34.     char *DraftClassArray[] = {"Ошибка", "Ошибка", "Ошибка"};
  35.     int *DraftClassArrayPointer;
  36.     DraftClassArrayPointer = DraftClassArray;
  37.     *Pointer = DraftClassArrayPointer;
  38.     for (i = 0; i < 3; i++) {
  39.         ClassNumbers[i] = 0 + rand() %9;
  40.         switch ( i ) {
  41.         case 0:
  42.             DraftClassArray[i] = ClassArray[(ClassNumbers[i])];
  43.         break;
  44.         case 1:
  45.             while (ClassNumbers[i] == ClassNumbers [i - 1]) {
  46.                 ClassNumbers[i] = 0 + rand() %9;
  47.             }
  48.             DraftClassArray[i] = ClassArray[(ClassNumbers[i])];
  49.         break;
  50.         case 2:
  51.             while ((ClassNumbers[i] == ClassNumbers [i - 1]) || (ClassNumbers[i] == ClassNumbers [i - 2])) {
  52.                 ClassNumbers[i] = 0 + rand() %9;
  53.             }
  54.             DraftClassArray[i] = ClassArray[(ClassNumbers[i])];
  55.         break;
  56.         }
  57.     }
  58.     int UserInput;
  59.     UserInput = getClassInput(DraftClassArrayPointer);
  60.     return(UserInput);
  61. }
  62.  
  63. int getClassInput (int *DraftClassArrayPointer){
  64.     unsigned i;
  65.     for (i = 0; i < 3; i++){
  66.         printf ("%i. %s\n", i + 1, *(DraftClassArrayPointer + i));
  67.     }
  68.     char ClassNumberInput;
  69.     puts ("Выберите номер класса, от 1 до 3:");
  70.     ClassNumberInput = getch();
  71.     switch ( ((int) ClassNumberInput) - 48 ) {
  72.         case 1:
  73.             return (((int) ClassNumberInput) - 48);
  74.         break;
  75.         case 2:
  76.             return (((int) ClassNumberInput) - 48);
  77.         break;
  78.         case 3:
  79.             return (((int) ClassNumberInput) - 48);
  80.         break;
  81.         default:
  82.             system ("cls");
  83.             puts ("Номер класса выбран неверно. Попробуйте еще раз.");
  84.             getClassInput(DraftClassArrayPointer);
  85.         break;
  86.     }
  87. }
  88.  
  89. int putChosenClass (){
  90.     int ChosenClassNumber;
  91.     int **DraftClassArrayPointerPointer;
  92.     int *DraftClassArrayPointer;
  93.     DraftClassArrayPointerPointer = &DraftClassArrayPointer;
  94.     ChosenClassNumber = (getClassArray(DraftClassArrayPointerPointer));
  95.     printf ("%s \n", *(DraftClassArrayPointer + ChosenClassNumber - 1));
  96. }
  97.  
  98. int getRarityQuantities (int *RarityQuantitiesTablePointer){
  99.     int RarityQuantity[5];
  100.     unsigned i;
  101.     char *RarityNames[] = {"базовой", "обычной", "редкой", "эпической", "легендарной"};
  102.     for (i = 0; i < 5; i++){
  103.         printf ("Введите количество страниц %s редкости:\n", RarityNames[i]);
  104.         scanf ("%i", &RarityQuantity[i]);
  105.     }
  106.     int *RarityQuantityPointer;
  107.     RarityQuantityPointer = RarityQuantity;
  108.     for (i = 0; i < 5; i++) {
  109.         *(RarityQuantitiesTablePointer + i) = *(RarityQuantityPointer + i);
  110.     }
  111. }
  112.  
  113. int putRarityQuantities (int *RarityQuantitiesTablePointer, int n){
  114.     return (*(RarityQuantitiesTablePointer + n) );
  115. }
  116.  
  117. int CardRandomizer (int RarityQuantity, int n, int *PagesArrayPointer, int *CardsArrayPointer, int CardNumber){
  118.     unsigned i;
  119.     char *RarityNames[] = {"Базовая", "Обычная", "Редкая", "Эпическая", "ЛЕГЕНДАРКА PogChamp"};
  120.     for (i = 0; i < 5; i++){
  121.         if (n == i){
  122.             puts (RarityNames[i]); //выводим редкость очередной карты
  123.         }
  124.     }
  125.     int Page, Card;
  126.     Page = 0 + rand() % RarityQuantity; //номер страницы
  127.     Card = 0 + rand() % 8;              // номер карты
  128.     printf ("Страница %i, %i-я карта.\n", Page + 1, Card + 1);
  129.     puts ("Если кол-во карт на странице не равно 8, нажмите 1, иначе нажмите любую кнопку.");
  130.     int DifferentCard;
  131.     int DifferentCardFlag = 0;
  132.     char Check;
  133.     Check = getch();
  134.     switch ( ((int)Check) - 48 ) {
  135.         case 1:
  136.             while (DifferentCardFlag != 1){
  137.                 puts ("Введите кол-во карт на странице:");
  138.                 scanf ("%i", &DifferentCard);
  139.                 if (DifferentCard > 8){
  140.                     puts ("Слишком большое число. Попробуйте еще раз:");
  141.                 }
  142.                 else {DifferentCardFlag = 1;}
  143.             }
  144.             Card = 0 + rand() %DifferentCard;
  145.             printf ("%i-я карта. Нажмите любую кнопку.\n", Card + 1);
  146.             getch();
  147.  
  148.         break;
  149.         default:
  150.             *(PagesArrayPointer + CardNumber) = Page;
  151.             *(CardsArrayPointer + CardNumber) = Card;
  152.         break;
  153.     }
  154. }
  155.  
  156. int BuildDeck (int *RarityQuantitiesTablePointer, int *PagesArrayPointer, int *CardsArrayPointer){
  157.     int CardNumber, Chance;
  158.     for (CardNumber = 0; CardNumber < 30; CardNumber++){
  159.     //заголовок
  160.         system ("cls");
  161.         printf ("Карта %i/30.\n", CardNumber+1);
  162.         Chance = 0 + rand() % 100;
  163.         if (Chance < 40) {
  164.             Chance = 0 + rand() %2;
  165.             if (Chance == 0){CardRandomizer(putRarityQuantities (RarityQuantitiesTablePointer, 0), 0, PagesArrayPointer, CardsArrayPointer, CardNumber);}
  166.             else {CardRandomizer(putRarityQuantities (RarityQuantitiesTablePointer, 1), 1, PagesArrayPointer, CardsArrayPointer, CardNumber);}
  167.         }
  168.         else {
  169.             if (Chance >= 40 && Chance < 80){
  170.                 CardRandomizer( putRarityQuantities (RarityQuantitiesTablePointer, 2), 2, PagesArrayPointer, CardsArrayPointer, CardNumber);
  171.                 }
  172.             else if (Chance >= 80 && Chance < 95){
  173.                 CardRandomizer( putRarityQuantities (RarityQuantitiesTablePointer, 3), 3, PagesArrayPointer, CardsArrayPointer, CardNumber);
  174.                 }
  175.             else if (Chance >= 95 && Chance < 100){
  176.                 CardRandomizer( putRarityQuantities (RarityQuantitiesTablePointer, 4), 4, PagesArrayPointer, CardsArrayPointer, CardNumber);
  177.                 }
  178.         }
  179.     }
  180. }
  181.  
  182. int ShowDeck (int *PagesArrayPointer, int *CardsArrayPointer){
  183.     unsigned i;
  184.     system ("cls");
  185.     puts ("Номер карты Страница Карта");
  186.     for (i = 0; i <30; i++){
  187.         printf ("%2i \t\t %3i \t %1i\n", i+1, *(PagesArrayPointer + i) + 1, *(CardsArrayPointer + i) + 1);
  188.     }
  189.     puts ("Приятной игры! ЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫ ДАААААААА!");
  190.     system ("pause");
  191. }
  192.  
  193. void main() {
  194.     Localize ();
  195.     Random ();
  196.     putChosenClass();
  197.     int *RarityQuantitiesTablePointer;
  198.     int RarityQuantitiesTable [5];
  199.     RarityQuantitiesTablePointer = RarityQuantitiesTable;
  200.     getRarityQuantities (RarityQuantitiesTablePointer);
  201.     int PagesArray [30]; int CardsArray [30];
  202.     int *PagesArrayPointer; int *CardsArrayPointer;
  203.     PagesArrayPointer = PagesArray; CardsArrayPointer = CardsArray;
  204.     BuildDeck(RarityQuantitiesTablePointer, PagesArrayPointer, CardsArrayPointer);
  205.     ShowDeck (PagesArrayPointer, CardsArrayPointer);
  206. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement