Advertisement
Guest User

Untitled

a guest
Sep 21st, 2013
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 6.52 KB | None | 0 0
  1. #include "stdafx.h"
  2. #include <iostream>
  3. #include <fstream>
  4. #include <sstream>
  5. #include <string>
  6. #include <map>
  7. #include <algorithm>
  8. #include <iterator>
  9. #include <vector>
  10. using namespace std;
  11.  
  12. class Holdings
  13. {
  14. private:
  15.     int strToInt(string s)
  16.     {
  17.         istringstream is;
  18.         is.str(s);
  19.         int i;
  20.         is >> i;
  21.         return i;
  22.     }
  23.  
  24. public:
  25.     map <string, int> data;
  26.  
  27.  
  28.     //takes data from EmpireHoldings.dat and assigns it to variables
  29.     int getHoldings(string strStartRead, string strEndRead)
  30.     {
  31.         ifstream fin("EmpireHoldings.dat");
  32.        
  33.         while (true)
  34.         {
  35.             string strFindStart;
  36.             getline (fin, strFindStart);
  37.             if (strFindStart == strStartRead)
  38.             {
  39.                 cout << strFindStart << endl; //need to make it print to a file instead of to console
  40.                 break;
  41.             }
  42.         }
  43.        
  44.        
  45.  
  46.         while (true)
  47.         {
  48.             istringstream is;
  49.             string key;
  50.             int value;
  51.             string line;
  52.             getline(fin, line);
  53.             if (line == strEndRead) break;
  54.             cout << line << endl; //need to make it print to a file instead of to console
  55.             is.str(line);
  56.             is >> key;
  57.             is >> value;
  58.             data[key] = value;
  59.         }
  60.         fin.close();
  61.         return 0;
  62.     }
  63.  
  64.     int getInputs(string strStartRead, string strEndRead) //changes variables based on HFC Input.dat
  65.     {
  66.         ifstream inf("HFC Input.dat");
  67.        
  68.         //need to make upkeep function (population consuming food, etc)
  69.  
  70.         while(true)
  71.         {
  72.             string strFindStart;
  73.             getline(inf, strFindStart);
  74.             if (strFindStart == strStartRead) break;
  75.         }
  76.         int nTemporaryPopulation = data["Population:"];
  77.         while(true)
  78.         {
  79.             string strCommand;
  80.             getline(inf, strCommand);
  81.             if (strCommand == strEndRead) break;
  82.             istringstream iss(strCommand);
  83.             vector<string> tokens;
  84.             copy(istream_iterator<string>(iss), istream_iterator<string>(), back_inserter<vector<string> >(tokens));
  85.             int nX = 0;
  86.             if (nTemporaryPopulation < 1) break;
  87.             int y;
  88.             y = strToInt(tokens[nX + 1]);
  89.             nTemporaryPopulation = nTemporaryPopulation - y;
  90.  
  91.                 if (tokens[nX] == "build")
  92.                 {
  93.                     if (tokens[nX + 2] == "towns")
  94.                          data["towns:"]= data["towns:"] + y;
  95.  
  96.                     if (tokens[nX + 2] == "farms")
  97.                         data["farms:"] = data["farms:"] + y;
  98.  
  99.                     if (tokens[nX + 2] == "stables")
  100.                         data["stables:"] = data["stables:"] + y;
  101.  
  102.                     if (tokens[nX + 2] == "naturepreserves")
  103.                         data["nature preserves:"] = data["nature preserves:"] + y;
  104.  
  105.                     if (tokens[nX + 2] == "fisheries")
  106.                         data["fisheries:"] = data["fisheries:"] + y;
  107.  
  108.                     if (tokens[nX + 2] == "mines")
  109.                         data["mines:"] = data["mines:"] + y;
  110.  
  111.                     if (tokens[nX + 2] == "forges")
  112.                         data["forges:"] = data["forges:"] + y;
  113.  
  114.                     if (tokens[nX + 2] == "subterraneanfarms")
  115.                         data["subterranean farms:"] = data["subterranean farms:"] + y;
  116.  
  117.                     if (tokens[nX + 2] == "fortresses")
  118.                         data["fortresses:"] = data["fortresses:"] + y;
  119.  
  120.                     if (tokens[nX + 2] == "graveyards")
  121.                         data["graveyards:"] = data["graveyards:"] + y;
  122.  
  123.                     if (tokens[nX + 2] == "unicorn pens")
  124.                         data["unicorn pens:"] = data["unicorn pens:"] + y;
  125.                 }
  126.  
  127.                 if (tokens[nX] == "work")
  128.                 {
  129.                     if (tokens[nX + 2] == "towns")
  130.                          {
  131.                             if (strStartRead == "*Human Empire"|| strStartRead == "*Kobold Empire")
  132.                             data["Population:"] = data["Population:"] + (2 * y);
  133.                             else
  134.                             data["Population:"] = data["Population:"] + y;
  135.                         }
  136.  
  137.                     if (tokens[nX + 2] == "farms"|| tokens[nX + 2] == "fisheries"|| (tokens[nX + 2] == "subterranean" && tokens[nX + 3] == "farms"))
  138.                         {
  139.                             if (strStartRead == "*Halfling Empire")
  140.                                 data["food:"] = data["food:"] + (y * 6);
  141.                             else
  142.                                 data["food:"] = data["food:"] + (y * 2);
  143.                         }  
  144.  
  145.                     if (tokens[nX + 2] == "stables")
  146.                         data["horses:"] = data["horses:"] + y;
  147.  
  148.                     if (tokens[nX + 2] == "nature" && tokens[nX + 3] == "preserves")
  149.                         data["food:"] = data["food:"] + (y * 2);
  150.                    
  151.                     if (tokens[nX + 2] == "graveyards")
  152.                         data["Population:"] = data["Population:"] - 1;
  153.                         //+ 1 undead army
  154.  
  155.                     if (tokens[nX + 2] == "unicorn" && tokens[nX + 3] == "pens")
  156.                         data["unicorns"] = data["unicorns"] + y;
  157.  
  158.                     //need to do a thing for mines
  159.                 }
  160.  
  161.                 if (tokens[nX] == "smelt")
  162.                 {
  163.                     if (tokens[nX + 2] == "iron")
  164.                         {
  165.                             data["Iron Ore:"] = data["Iron Ore:"] - y;
  166.                             data["Coal:"] = data["Coal:"] - y;
  167.                             data["Iron Bars:"] = data["Iron Bars:"] + y;
  168.                         }
  169.                     if (tokens[nX + 2] == "steel")
  170.                         {
  171.                             data["Iron Bars"] = data["Iron Bars"] - (y * 2);
  172.                             data["Coal:"] = data["Coal:"] - (y * 2);
  173.                             data["Steel Bars:"] = data["Steel Bars:"] + y;
  174.                         }
  175.                     if (tokens[nX + 2] == "mithril")
  176.                         {
  177.                             data["Raw Mithril:"] = data["Raw Mithril"] - y;
  178.                             data["Coal:"] = data["Coal:"] - (y * 10);
  179.                             data["Mithril Bars:"] = data["Mithril Bars:"] + y;
  180.                         }
  181.                 }
  182.  
  183.                 if (tokens[nX] == "forge")
  184.                 {
  185.                     if (tokens[nX + 2] == "iron")
  186.                     {
  187.                         if (tokens[nX + 3] == "armor")
  188.                         {
  189.                         data["Iron Bars:"] = data["Iron Bars:"] - (y * 5);
  190.                         data["Iron Armor:"] = data["Iron Armor:"] + y;
  191.                         }
  192.                         if (tokens[nX + 3] == "weapons")
  193.                         {
  194.                         data["Iron Bars:"] = data["Iron Bars:"] - (y * 3);
  195.                         data["Iron Weapons:"] = data["Iron Weapons:"] + y;
  196.                         }
  197.                     }
  198.                 if (tokens[nX + 2] == "steel")
  199.                     {
  200.                         if (tokens[nX + 3] == "armor")
  201.                         {
  202.                         data["Steel Bars:"] = data["Steel Bars:"] - (y * 5);
  203.                         data["Steel Armor:"] = data["Steel Armor:"] + y;
  204.                         }
  205.                         if (tokens[nX + 3] == "weapons")
  206.                         {
  207.                         data["Steel Bars:"] = data["Steel Bars:"] - (y * 3);
  208.                         data["Steel Weapons:"] = data["Steel Weapons:"] + y;
  209.                         }
  210.                     }
  211.                 if (tokens[nX + 2] == "mithril")
  212.                     {
  213.                         if (tokens[nX + 3] == "armor")
  214.                         {
  215.                         data["Mithril Bars:"] = data["Mithril Bars:"] - (y * 5);
  216.                         data["Mithril Armor:"] = data["Mithril Armor:"] + y;
  217.                         }
  218.                         if (tokens[nX + 3] == "weapons")
  219.                         {
  220.                         data["Mithril Bars:"] = data["Mithril Bars:"] - (y * 3);
  221.                         data["Mithril Weapons:"] = data["Mithril Weapons:"] + y;
  222.                         }
  223.                     }
  224.                 }
  225.         }
  226.         inf.close();
  227.         return 0;
  228.     }
  229.     //prints up-to-date data to EmpireHoldings.dat
  230.     int printHoldings()
  231.     {
  232.         map<string, int>::iterator it;
  233.  
  234.         for (it = data.begin(); it != data.end(); it++)
  235.     {
  236.         cout << it -> first;
  237.         cout << it -> second;
  238.     }
  239.  
  240.         return 0;
  241.     }
  242. };
  243. int main()
  244. {
  245.     Holdings HumanHoldings;
  246.     HumanHoldings.getHoldings("*Human Empire:", "endHuman");
  247.     HumanHoldings.getInputs("*Human Empire:", "endHuman");
  248.  
  249.     return 0;
  250. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement