Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <math.h>
- #include <locale.h>
- #include <windows.h>
- #include <stdlib.h>
- #include <conio.h>
- // Прототипы функций
- void Localize ();
- void Random ();
- int getClassArray (int *);
- int getClassInput (int *);
- int putChosenClass ();
- int getRarityQuantities (int *);
- int putRarityQuantities (int *, int);
- int CardRandomizer (int, int, int *, int *, int, int *);
- int BuildDeck (int *, int *, int *, int *);
- int ShowDeck (int *, int *, int *);
- void Localize (){
- setlocale(LC_ALL, "Russian");
- //SetConsoleCP(1251);
- //SetConsoleOutputCP(1251);
- }
- void Random (){
- srand(time(NULL));
- }
- int getClassArray (int *Pointer){
- char *ClassArray[] = {"Воин", "Шаман", "Разбойник", "Паладин", "Охотник", "Друид", "Чернокнижник", "Маг", "Жрец"};
- puts ("Выберите класс:");
- char ClassNumbers[3]; unsigned i, j;
- char *DraftClassArray[] = {"Ошибка", "Ошибка", "Ошибка"};
- int *DraftClassArrayPointer;
- DraftClassArrayPointer = DraftClassArray;
- *Pointer = DraftClassArrayPointer;
- for (i = 0; i < 3; i++) {
- ClassNumbers[i] = 0 + rand() %9;
- switch ( i ) {
- case 0:
- DraftClassArray[i] = ClassArray[(ClassNumbers[i])];
- break;
- case 1:
- while (ClassNumbers[i] == ClassNumbers [i - 1]) {
- ClassNumbers[i] = 0 + rand() %9;
- }
- DraftClassArray[i] = ClassArray[(ClassNumbers[i])];
- break;
- case 2:
- while ((ClassNumbers[i] == ClassNumbers [i - 1]) || (ClassNumbers[i] == ClassNumbers [i - 2])) {
- ClassNumbers[i] = 0 + rand() %9;
- }
- DraftClassArray[i] = ClassArray[(ClassNumbers[i])];
- break;
- }
- }
- int UserInput;
- UserInput = getClassInput(DraftClassArrayPointer);
- return(UserInput);
- }
- int getClassInput (int *DraftClassArrayPointer){
- //printf ("\nDEBUG\nDEBUG\n DraftClassArrayPointer = %i \nDEBUG\nDEBUG\n", DraftClassArrayPointer);
- unsigned i;
- for (i = 0; i < 3; i++){
- printf ("%i. %s\n", i + 1, *(DraftClassArrayPointer + i));
- }
- char ClassNumberInput;
- puts ("Выберите номер класса, от 1 до 3:");
- ClassNumberInput = getch();
- switch ( ((int) ClassNumberInput) - 48 ) {
- case 1:
- return (((int) ClassNumberInput) - 48);
- break;
- case 2:
- return (((int) ClassNumberInput) - 48);
- break;
- case 3:
- return (((int) ClassNumberInput) - 48);
- break;
- default:
- system ("cls");
- puts ("Номер класса выбран неверно. Попробуйте еще раз.");
- return (getClassInput(DraftClassArrayPointer));
- break;
- }
- }
- int putChosenClass (){
- int ChosenClassNumber;
- int **DraftClassArrayPointerPointer;
- int *DraftClassArrayPointer;
- DraftClassArrayPointerPointer = &DraftClassArrayPointer;
- ChosenClassNumber = (getClassArray(DraftClassArrayPointerPointer));
- printf ("%s \n", *(DraftClassArrayPointer + ChosenClassNumber - 1));
- }
- int getRarityQuantities (int *RarityQuantitiesTablePointer){
- int RarityQuantity[5];
- unsigned i;
- char *RarityNames[] = {"базовой", "обычной", "редкой", "эпической", "легендарной"};
- for (i = 0; i < 5; i++){
- printf ("Введите количество страниц %s редкости:\n", RarityNames[i]);
- scanf ("%i", &RarityQuantity[i]);
- }
- int *RarityQuantityPointer;
- RarityQuantityPointer = RarityQuantity;
- for (i = 0; i < 5; i++) {
- *(RarityQuantitiesTablePointer + i) = *(RarityQuantityPointer + i);
- }
- }
- int putRarityQuantities (int *RarityQuantitiesTablePointer, int n){
- return (*(RarityQuantitiesTablePointer + n) );
- }
- int CardRandomizer (int RarityQuantity, int n, int *PagesArrayPointer, int *CardsArrayPointer, int CardNumber, int *RaritiesArrayPointer){
- unsigned i;
- char *RarityNames[] = {"Базовая", "Обычная", "Редкая", "Эпическая", "ЛЕГЕНДАРКА PogChamp"};
- for (i = 0; i < 5; i++){
- if (n == i){
- puts (RarityNames[i]); //выводим редкость очередной карты
- }
- }
- int Page, Card;
- Page = 0 + rand() % RarityQuantity; //номер страницы
- Card = 0 + rand() % 8; // номер карты
- printf ("Страница %i, %i-я карта.\n", Page + 1, Card + 1);
- puts ("Если кол-во карт на странице не равно 8, нажмите 1, иначе нажмите любую кнопку.");
- int DifferentCard;
- int DifferentCardFlag = 0;
- char Check;
- Check = getch();
- switch ( ((int)Check) - 48 ) {
- case 1:
- while (DifferentCardFlag != 1){
- puts ("Введите кол-во карт на странице:");
- scanf ("%i", &DifferentCard);
- if (DifferentCard > 8){
- puts ("Слишком большое число. Попробуйте еще раз:");
- }
- else {DifferentCardFlag = 1;}
- }
- Card = 0 + rand() %DifferentCard;
- printf ("%i-я карта. Нажмите любую кнопку.\n", Card + 1);
- *(PagesArrayPointer + CardNumber) = Page;
- *(CardsArrayPointer + CardNumber) = Card;
- *(RaritiesArrayPointer + CardNumber) = n;
- getch();
- break;
- default:
- *(PagesArrayPointer + CardNumber) = Page;
- *(CardsArrayPointer + CardNumber) = Card;
- *(RaritiesArrayPointer + CardNumber) = n;
- break;
- }
- }
- int BuildDeck (int *RarityQuantitiesTablePointer, int *PagesArrayPointer, int *CardsArrayPointer, int *RaritiesArrayPointer){
- int CardNumber, Chance;
- for (CardNumber = 0; CardNumber < 30; CardNumber++){
- //заголовок
- system ("cls");
- printf ("Карта %i/30.\n", CardNumber+1);
- Chance = 0 + rand() % 100;
- if (Chance < 40) {
- Chance = 0 + rand() %2;
- if (Chance == 0){CardRandomizer(putRarityQuantities (RarityQuantitiesTablePointer, 0), 0, PagesArrayPointer, CardsArrayPointer, CardNumber, RaritiesArrayPointer);}
- else {CardRandomizer(putRarityQuantities (RarityQuantitiesTablePointer, 1), 1, PagesArrayPointer, CardsArrayPointer, CardNumber, RaritiesArrayPointer);}
- }
- else {
- if (Chance >= 40 && Chance < 80){
- CardRandomizer( putRarityQuantities (RarityQuantitiesTablePointer, 2), 2, PagesArrayPointer, CardsArrayPointer, CardNumber, RaritiesArrayPointer);
- }
- else if (Chance >= 80 && Chance < 95){
- CardRandomizer( putRarityQuantities (RarityQuantitiesTablePointer, 3), 3, PagesArrayPointer, CardsArrayPointer, CardNumber, RaritiesArrayPointer);
- }
- else if (Chance >= 95 && Chance < 100){
- CardRandomizer( putRarityQuantities (RarityQuantitiesTablePointer, 4), 4, PagesArrayPointer, CardsArrayPointer, CardNumber, RaritiesArrayPointer);
- }
- }
- }
- }
- int ShowDeck (int *PagesArrayPointer, int *CardsArrayPointer, int *RaritiesArrayPointer){
- unsigned i;
- system ("cls");
- printf ("%5s %11s %8s %5s\n", "Номер", "Редкость", "Страница", "Карта");
- puts ("------------------------------------");
- char *RarityNames[] = {"Базовая", "Обычная", "Редкая", "Эпическая", "Легендарная"};
- for (i = 0; i <30; i++){
- printf ("%2i \t %11s \t %3i \t %1i\n", i+1, RarityNames[*(RaritiesArrayPointer + i)], *(PagesArrayPointer + i) + 1, *(CardsArrayPointer + i) + 1);
- puts ("------------------------------------");
- }
- puts ("Приятной игры!");
- system ("pause");
- }
- void main() {
- Localize ();
- Random ();
- putChosenClass();
- int *RarityQuantitiesTablePointer;
- int RarityQuantitiesTable [5];
- RarityQuantitiesTablePointer = RarityQuantitiesTable;
- getRarityQuantities (RarityQuantitiesTablePointer);
- int PagesArray [30]; int CardsArray [30]; int RaritiesArray [30];
- int *PagesArrayPointer; int *CardsArrayPointer; int *RaritiesArrayPointer;
- PagesArrayPointer = PagesArray; CardsArrayPointer = CardsArray; RaritiesArrayPointer = RaritiesArray;
- BuildDeck(RarityQuantitiesTablePointer, PagesArrayPointer, CardsArrayPointer, RaritiesArrayPointer);
- ShowDeck (PagesArrayPointer, CardsArrayPointer, RaritiesArrayPointer);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement