Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Magic_trick.cpp : Defines the entry point for the console application.
- //
- #include "stdafx.h"
- #include <iostream>
- #include <cstdlib>
- #include <string>
- #include <time.h>
- #include <vector>
- using namespace std;
- class Deck
- {
- vector <int> dck;
- int size;
- int buf;
- char choice;
- bool check(int rand, vector <int> deck, int position)
- {
- int help = 0;
- if (position == 0) return false;
- do
- {
- if (rand == deck[help])
- {
- return true;
- }
- help++;
- } while (help < position);
- return false;
- }
- int randNum()
- {
- srand(time(NULL));
- return (rand() % 24) + 1;
- }
- public:
- Deck(int a)
- :size(a)
- {
- vector <int> dck = vector <int> (size);
- }
- void first_deck()
- {
- int counter = 0;
- do {
- buf = randNum();
- if (check(buf, dck, counter) == false)
- {
- dck.push_back(buf);
- counter++;
- }
- } while (counter < 24);
- }
- void set_deck(Deck &pnt)
- {
- dck.clear();
- int i = 0;
- do
- {
- buf = randNum();
- if (check(buf, pnt.dck, i) == false)
- {
- dck.push_back(buf);
- i++;
- }
- } while (i + dck.size() <= 24);
- i = 0;
- do
- {
- dck.push_back( pnt.dck[i]);
- i++;
- } while (dck.size() <= 24);
- }
- void show_deck(int number)
- {
- int cards=0;
- cout << number << "." << endl;
- while (cards < dck.size())
- {
- cout << dck[cards] << ", ";
- cards++;
- }
- cout << endl;
- }
- void split_deck(Deck one, Deck two, Deck three, Deck four, int time)
- {
- Deck* on=&one;
- Deck* tw=&two;
- Deck* th=&three;
- Deck* fo=&four;
- on->dck.clear();
- tw->dck.clear();
- th->dck.clear();
- fo->dck.clear();
- int buff;
- for (int i = 0; i < 24; i++)
- {
- buff = dck[i];
- if (i%time == 0) on->dck.push_back(buff);
- if (i%time == 1) tw->dck.push_back(buff);
- if (i%time == 2) th->dck.push_back(buff);
- if (i%time == 3) fo->dck.push_back(buff);
- }
- }
- void guess()
- {
- cout << "Your number is: " << dck[9] << endl;
- }
- };
- class Magician
- {
- public:
- Magician()
- {
- cout << "I going to show you a magic trick. \nChoose a number between 1 and 24.\n";
- system("pause");
- }
- void inform()
- {
- cout << "Chose a deck with your choosen number:" << endl;
- }
- };
- int main()
- {
- char choice;
- Deck main_deck(24);
- Deck* dmain = &main_deck;
- dmain->first_deck();
- Deck one(6), two(6), three(6), four(6);
- dmain->split_deck(one, two, three, four, 4);
- Deck* dchosen=&one;
- Magician houdini;
- houdini.inform();
- one.show_deck(1);
- two.show_deck(2);
- three.show_deck(3);
- four.show_deck(4);
- cin >> choice;
- switch (choice)
- {
- case '1':
- dchosen = &one; break;
- case '2':
- dchosen = &two; break;
- case '3':
- dchosen = &three; break;
- case '4':
- dchosen = &four; break;
- }
- dmain->set_deck(*dchosen);
- dmain->split_deck(one, two, three, four, 3);
- houdini.inform();
- one.show_deck(1);
- two.show_deck(2);
- three.show_deck(3);
- cin >> choice;
- switch (choice)
- {
- case '1':
- dchosen = &one; break;
- case '2':
- dchosen = &two; break;
- case '3':
- dchosen = &three; break;
- }
- dmain->set_deck(*dchosen);
- dmain->split_deck(one, two, three, four, 2);
- houdini.inform();
- one.show_deck(1);
- two.show_deck(2);
- cin >> choice;
- switch (choice)
- {
- case '1':
- dchosen = &one; break;
- case '2':
- dchosen = &two; break;
- }
- dmain->set_deck(*dchosen);
- dmain->guess();
- system("pause");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement