Advertisement
kiraventom

HFA 3.0 beta

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