Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <string>
- #include <iostream>
- #include <fstream>
- #include <vector>
- #include <time.h>
- using namespace std;
- const int q = 12;
- const int event_n = 2;
- struct GameEvent
- {
- GameEvent() {}
- GameEvent(int id, int tr, string text, int t1_l, int t2_l, int t3_l, int t4_l, int t5_l)
- : id(id)
- , tr(tr)
- , text(text)
- , t1_l(t1_l)
- , t2_l(t2_l)
- , t3_l(t3_l)
- , t4_l(t4_l)
- , t5_l(t5_l)
- {}
- ~GameEvent() {}
- int id;
- int tr;
- string text;
- int t1_l; //is the event lethal for tribute 1?
- int t2_l;
- int t3_l;
- int t4_l;
- int t5_l;
- };
- struct GameTribute
- {
- GameTribute() {}
- GameTribute(int id, string name, bool alive, bool free)
- : id(id)
- , name(name)
- , alive(alive)
- , free(free)
- {}
- ~GameTribute() {}
- int id;
- string name;
- bool alive;
- bool free;
- };
- vector<GameEvent> event;
- vector<GameTribute> tribute;
- void initEvents() //list of events
- {
- event.push_back(GameEvent(1,1," goes hunting.",0,0,0,0,0));
- event.push_back(GameEvent(2,1," dies horribly.",1,0,0,0,0));
- }
- void rSetup() //list of tributes
- {
- for (int i=0; i<q; i++)
- {
- string name;
- cin >> name;
- tribute.push_back(GameTribute(i,name,true,true));
- }
- }
- void reaping()
- {
- int tr_al = q; //tributes alive
- int day = 0;
- while (tr_al > 1)
- {
- day++;
- cout << "Day " << day << endl;
- for(int i=0; i<q; i++) //reset their free status
- {
- tribute[i].free = true;
- }
- int free_tr = tr_al;
- while (free_tr > 0)
- {
- int e_id;
- do e_id = rand() % event_n; //get random event
- while (event[e_id].tr > free_tr); //check if we can use it
- int tr_id[5];
- for(int i=0; i<event[e_id].tr; i++) //get random tributes
- {
- do tr_id[i] = rand() % q;
- while (!(tribute[tr_id[i]].free) || !(tribute[tr_id[i]].alive));
- }
- cout << tribute[tr_id[0]].name << event[e_id].text << endl; //event text
- tribute[tr_id[0]].free = false;
- // for (int i = 0; i<event[e_id].tr; i++)
- // {
- if (event[e_id].t1_l) //make array for lethals !!!
- {
- tribute[tr_id[0]].alive = false;
- tr_al--;
- }
- // }
- if (tr_al == 1) break;
- free_tr--;
- }
- cout << endl;
- }
- for(int i=0; i<q; i++)
- {
- if (tribute[i].alive) cout << tribute[i].name << " survives and wins!" << endl;
- }
- }
- int main()
- {
- srand(time(NULL));
- initEvents();
- rSetup();
- reaping();
- system("pause");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement