Advertisement
kiraventom

HFA 2.1 beta

Jan 6th, 2018
185
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 7.88 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, int *);
  17. int BuildDeck (int *, int *, int *, int *);
  18. int ShowDeck (int *, 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.     //printf ("\nDEBUG\nDEBUG\n DraftClassArrayPointer = %i \nDEBUG\nDEBUG\n", DraftClassArrayPointer);
  65.     unsigned i;
  66.     for (i = 0; i < 3; i++){
  67.         printf ("%i. %s\n", i + 1, *(DraftClassArrayPointer + i));
  68.     }
  69.     char ClassNumberInput;
  70.     puts ("Выберите номер класса, от 1 до 3:");
  71.     ClassNumberInput = getch();
  72.     switch ( ((int) ClassNumberInput) - 48 ) {
  73.         case 1:
  74.             return (((int) ClassNumberInput) - 48);
  75.         break;
  76.         case 2:
  77.             return (((int) ClassNumberInput) - 48);
  78.         break;
  79.         case 3:
  80.             return (((int) ClassNumberInput) - 48);
  81.         break;
  82.         default:
  83.             system ("cls");
  84.             puts ("Номер класса выбран неверно. Попробуйте еще раз.");
  85.             return (getClassInput(DraftClassArrayPointer));
  86.         break;
  87.     }
  88. }
  89.  
  90. int putChosenClass (){
  91.     int ChosenClassNumber;
  92.     int **DraftClassArrayPointerPointer;
  93.     int *DraftClassArrayPointer;
  94.     DraftClassArrayPointerPointer = &DraftClassArrayPointer;
  95.     ChosenClassNumber = (getClassArray(DraftClassArrayPointerPointer));
  96.     printf ("%s \n", *(DraftClassArrayPointer + ChosenClassNumber - 1));
  97. }
  98.  
  99. int getRarityQuantities (int *RarityQuantitiesTablePointer){
  100.     int RarityQuantity[5];
  101.     unsigned i;
  102.     char *RarityNames[] = {"базовой", "обычной", "редкой", "эпической", "легендарной"};
  103.     for (i = 0; i < 5; i++){
  104.         printf ("Введите количество страниц %s редкости:\n", RarityNames[i]);
  105.         scanf ("%i", &RarityQuantity[i]);
  106.     }
  107.     int *RarityQuantityPointer;
  108.     RarityQuantityPointer = RarityQuantity;
  109.     for (i = 0; i < 5; i++) {
  110.         *(RarityQuantitiesTablePointer + i) = *(RarityQuantityPointer + i);
  111.     }
  112. }
  113.  
  114. int putRarityQuantities (int *RarityQuantitiesTablePointer, int n){
  115.     return (*(RarityQuantitiesTablePointer + n) );
  116. }
  117.  
  118. int CardRandomizer (int RarityQuantity, int n, int *PagesArrayPointer, int *CardsArrayPointer, int CardNumber, int *RaritiesArrayPointer){
  119.     unsigned i;
  120.     char *RarityNames[] = {"Базовая", "Обычная", "Редкая", "Эпическая", "ЛЕГЕНДАРКА PogChamp"};
  121.     for (i = 0; i < 5; i++){
  122.         if (n == i){
  123.             puts (RarityNames[i]); //выводим редкость очередной карты
  124.         }
  125.     }
  126.     int Page, Card;
  127.     Page = 0 + rand() % RarityQuantity; //номер страницы
  128.     Card = 0 + rand() % 8;              // номер карты
  129.     printf ("Страница %i, %i-я карта.\n", Page + 1, Card + 1);
  130.     puts ("Если кол-во карт на странице не равно 8, нажмите 1, иначе нажмите любую кнопку.");
  131.     int DifferentCard;
  132.     int DifferentCardFlag = 0;
  133.     char Check;
  134.     Check = getch();
  135.     switch ( ((int)Check) - 48 ) {
  136.         case 1:
  137.             while (DifferentCardFlag != 1){
  138.                 puts ("Введите кол-во карт на странице:");
  139.                 scanf ("%i", &DifferentCard);
  140.                 if (DifferentCard > 8){
  141.                     puts ("Слишком большое число. Попробуйте еще раз:");
  142.                 }
  143.                 else {DifferentCardFlag = 1;}
  144.             }
  145.             Card = 0 + rand() %DifferentCard;
  146.             printf ("%i-я карта. Нажмите любую кнопку.\n", Card + 1);
  147.             *(PagesArrayPointer + CardNumber) = Page;
  148.             *(CardsArrayPointer + CardNumber) = Card;
  149.             *(RaritiesArrayPointer + CardNumber) = n;
  150.             getch();
  151.         break;
  152.         default:
  153.             *(PagesArrayPointer + CardNumber) = Page;
  154.             *(CardsArrayPointer + CardNumber) = Card;
  155.             *(RaritiesArrayPointer + CardNumber) = n;
  156.         break;
  157.     }
  158. }
  159.  
  160. int BuildDeck (int *RarityQuantitiesTablePointer, int *PagesArrayPointer, int *CardsArrayPointer, int *RaritiesArrayPointer){
  161.     int CardNumber, Chance;
  162.     for (CardNumber = 0; CardNumber < 30; CardNumber++){
  163.     //заголовок
  164.         system ("cls");
  165.         printf ("Карта %i/30.\n", CardNumber+1);
  166.         Chance = 0 + rand() % 100;
  167.         if (Chance < 40) {
  168.             Chance = 0 + rand() %2;
  169.             if (Chance == 0){CardRandomizer(putRarityQuantities (RarityQuantitiesTablePointer, 0), 0, PagesArrayPointer, CardsArrayPointer, CardNumber, RaritiesArrayPointer);}
  170.             else {CardRandomizer(putRarityQuantities (RarityQuantitiesTablePointer, 1), 1, PagesArrayPointer, CardsArrayPointer, CardNumber, RaritiesArrayPointer);}
  171.         }
  172.         else {
  173.             if (Chance >= 40 && Chance < 80){
  174.                 CardRandomizer( putRarityQuantities (RarityQuantitiesTablePointer, 2), 2, PagesArrayPointer, CardsArrayPointer, CardNumber, RaritiesArrayPointer);
  175.                 }
  176.             else if (Chance >= 80 && Chance < 95){
  177.                 CardRandomizer( putRarityQuantities (RarityQuantitiesTablePointer, 3), 3, PagesArrayPointer, CardsArrayPointer, CardNumber, RaritiesArrayPointer);
  178.                 }
  179.             else if (Chance >= 95 && Chance < 100){
  180.                 CardRandomizer( putRarityQuantities (RarityQuantitiesTablePointer, 4), 4, PagesArrayPointer, CardsArrayPointer, CardNumber, RaritiesArrayPointer);
  181.                 }
  182.         }
  183.     }
  184. }
  185.  
  186. int ShowDeck (int *PagesArrayPointer, int *CardsArrayPointer, int *RaritiesArrayPointer){
  187.     unsigned i;
  188.     system ("cls");
  189.     printf ("%5s    %11s  %8s %5s\n", "Номер", "Редкость", "Страница", "Карта");
  190.     puts ("------------------------------------");
  191.     char *RarityNames[] = {"Базовая", "Обычная", "Редкая", "Эпическая", "Легендарная"};
  192.     for (i = 0; i <30; i++){
  193.         printf ("%2i \t %11s \t %3i \t %1i\n", i+1, RarityNames[*(RaritiesArrayPointer + i)], *(PagesArrayPointer + i) + 1, *(CardsArrayPointer + i) + 1);
  194.         puts ("------------------------------------");
  195.     }
  196.     puts ("Приятной игры!");
  197.     system ("pause");
  198. }
  199.  
  200. void main() {
  201.     Localize ();
  202.     Random ();
  203.     putChosenClass();
  204.     int *RarityQuantitiesTablePointer;
  205.     int RarityQuantitiesTable [5];
  206.     RarityQuantitiesTablePointer = RarityQuantitiesTable;
  207.     getRarityQuantities (RarityQuantitiesTablePointer);
  208.     int PagesArray [30]; int CardsArray [30]; int RaritiesArray [30];
  209.     int *PagesArrayPointer; int *CardsArrayPointer; int *RaritiesArrayPointer;
  210.     PagesArrayPointer = PagesArray; CardsArrayPointer = CardsArray; RaritiesArrayPointer = RaritiesArray;
  211.     BuildDeck(RarityQuantitiesTablePointer, PagesArrayPointer, CardsArrayPointer, RaritiesArrayPointer);
  212.     ShowDeck (PagesArrayPointer, CardsArrayPointer, RaritiesArrayPointer);
  213. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement