daily pastebin goal
55%
SHARE
TWEET

swiat

a guest Apr 21st, 2017 53 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. //#include "Organizm.h"
  2. #include "Czlowiek.h"
  3. #include "Wilk.h"
  4. #include "Owca.h"
  5. #include "Lis.h"
  6. #include "Zolw.h"
  7. #include "Antylopa.h"
  8. #include "CyberOwca.h"
  9. #include "Trawa.h"
  10. #include "Mlecz.h"
  11. #include "Organizm.h"
  12. #include "Guarana.h"
  13. #include "WilczeJagody.h"
  14. #include "BarszczSosnowskiego.h"
  15. #include "Swiat.h"
  16.  
  17.  
  18. #define POCZATKOWA_ILOSC 30
  19. #define ILOSC_ROZNYCH_OBIEKTOW 11
  20.  
  21. Swiat::Swiat(int x, int y)
  22. {
  23.     this->rozmiarSwiata.x = x;
  24.     this->rozmiarSwiata.y = y;
  25.     this->tura = 0;
  26.     this->Organizmy = new Organizm**[y];
  27.     for (int i = 0; i < y; i++) {
  28.         this->Organizmy[i] = new Organizm*[x];
  29.         for(int j=0;j<x;j++)
  30.             this->Organizmy[i][j] = NULL;
  31.     }
  32.  
  33. }
  34. //void Swiat::czlowiekDoMapy() {
  35. //  mapa[czlowiek->getPolozenieX()][czlowiek->getPolozenieY()] = 'C';
  36. //}
  37. int Swiat::getRozmiarX() {
  38.     return this->rozmiarSwiata.x;
  39. }
  40. int Swiat::getRozmiarY() {
  41.     return this->rozmiarSwiata.y;
  42. }
  43. void Swiat::wykonajTure() {
  44.     int etap;
  45.     system("title Katarzyna Cencelewska 165117");
  46.     cout << "1.Nowa gra" << endl;
  47.     cout << "2.Wczytaj grę" << endl;
  48.     cin >> etap;
  49.     if (etap == 1)
  50.         this->zaladujNowe();
  51.     //system("pause");
  52.     //if (etap == 2)
  53.     //this->wczytaj();
  54.    
  55.     system("cls");
  56.     cout << endl<<"nacisnij klawisz aby rozpoczac";
  57.     while (czlowiek->zyje()) {
  58.     this->Tura();
  59.  
  60.     }
  61.     while (true) {
  62.     this->Tura();
  63.  
  64.     }
  65. }
  66. void Swiat::zaladujNowe() {
  67.     this->czlowiek = (Czlowiek*)this->stworzOrganizm(this->rozmiarSwiata.x / 2, this->rozmiarSwiata.y / 2, 'C');
  68.     int obj_numer, x, y;
  69.     for (int i = 0; i < POCZATKOWA_ILOSC; i++) {
  70.         obj_numer = rand() % ILOSC_ROZNYCH_OBIEKTOW;
  71.         x = rand() % rozmiarSwiata.x;
  72.         y = rand() % rozmiarSwiata.y;
  73.         if (this->Organizmy[x*this->rozmiarSwiata.y + y] == NULL) {
  74.             switch (obj_numer) {
  75.             case 0:
  76.                 this->stworzOrganizm(x, y, 'W');
  77.                 break;
  78.             case 1:
  79.                 this->stworzOrganizm(x, y, 'O');
  80.                 break;
  81.             case 2:
  82.                 this->stworzOrganizm(x, y, 'L');
  83.                 break;
  84.             case 3:
  85.                 this->stworzOrganizm(x, y, 'Z');
  86.                 break;
  87.             case 4:
  88.                 this->stworzOrganizm(x, y, 'A');
  89.                 break;
  90.             case 5:
  91.                 this->stworzOrganizm(x, y, 'Y');
  92.                 break;
  93.             case 6:
  94.                 this->stworzOrganizm(x, y, 't');
  95.                 break;
  96.             case 7:
  97.                 this->stworzOrganizm(x, y, 'm');
  98.                 break;
  99.             case 8:
  100.                 this->stworzOrganizm(x, y, 'g');
  101.                 break;
  102.             case 9:
  103.                 this->stworzOrganizm(x, y, 'w');
  104.                 break;
  105.             case 10:
  106.                 this->stworzOrganizm(x, y, 'b');
  107.                 break;
  108.             default:
  109.                 break;
  110.             }
  111.         }
  112.     }
  113.     this->rysujSwiat();
  114.  
  115. }
  116. void Swiat::przesunCzlowieka() {
  117.     /*char move = getch();
  118.  
  119.     switch (move)
  120.     {
  121.     case GORA:
  122.         if (czlowiek->polozenie.x - 1 == -1)
  123.             break;
  124.         else
  125.             czlowiek->polozenie.x--;
  126.         break;
  127.     case DOL:
  128.         if (czlowiek->polozenie.x + 1 == rozmiarSwiata.x)
  129.             break;
  130.         else
  131.             czlowiek->polozenie.x++;
  132.         break;
  133.     case LEWO:
  134.         if (czlowiek->polozenie.y - 1 == -1)
  135.             break;
  136.         else
  137.             czlowiek->polozenie.y--;
  138.         break;
  139.     case PRAWO:
  140.         if (czlowiek->polozenie.y + 1 == rozmiarSwiata.y)
  141.             break;
  142.         else
  143.             czlowiek->polozenie.y++;
  144.         break;
  145.     }*/
  146. }
  147. void Swiat::Tura() {
  148.    
  149.     for (int i = 0; i < rozmiarSwiata.y; i++) {
  150.         for (int j = 0; j < rozmiarSwiata.y; j++)//poprzedni wiek
  151.         {
  152.             if (Organizmy[i][j] != NULL)
  153.                 this->Organizmy[i][j]->akcja();
  154.         }
  155.         for (int j = 0; j < rozmiarSwiata.y; j++) {
  156.             if (Organizmy[i][j] != NULL)
  157.             this->Organizmy[i][j]->zmienWiek();
  158.  
  159.         }
  160.     }
  161.     this->rysujSwiat();
  162.     cout << endl << "Tura " << tura << endl;
  163. }
  164. bool Swiat::Pole(int x, int y) {
  165.     if (x < this->rozmiarSwiata.x && x >= 0 && y >= 0 && y < this->rozmiarSwiata.y)
  166.         return true;
  167.     else
  168.         return false;
  169. }
  170.  
  171. void Swiat::ladowanieRuchu(int x, int y, int przesX, int przesY) {//x,y-obecna pozycja, przesX,przesY-pozycja wynikowa
  172.  
  173.     if (this->Organizmy[przesY][przesX] == NULL)
  174.     {
  175.         //this->zmianaPozycji(x, y, przesX, przesY);
  176.         //return;
  177.     }
  178.     //if (this->Organizmy[poz]->getZnak() == this->Organizmy[przesPoz]->getZnak()) {// mnożenie
  179.  
  180.     //}
  181.     else {//walka
  182.  
  183.         this->zmianaPozycji(x, y, przesX, przesY);
  184.         return;
  185.     }
  186.  
  187. }
  188.  
  189. void Swiat::zmianaPozycji(int x, int y, int przesX, int przesY)//x,y-obecna pozycja, przesX,przesY-pozycja wynikowa
  190. {
  191.     if (this->Organizmy[y][x] != NULL) {
  192.         this->Organizmy[y][x]->setPolozenieX(przesX);
  193.         this->Organizmy[y][x]->setPolozenieY(przesY);
  194.        
  195.     }
  196.     if (this->Organizmy[przesY][przesX] != NULL) {
  197.         this->Organizmy[przesY][przesX]->setPolozenieX(x);
  198.         this->Organizmy[przesY][przesX]->setPolozenieY(y);
  199.     }
  200.     swap(this->Organizmy[y][x], this->Organizmy[przesY][przesX]);
  201.     return;
  202. }
  203.  
  204.  
  205. Organizm* Swiat::stworzOrganizm(int x, int y, char znak)
  206. {
  207.     if (Organizmy[y][x] != NULL)
  208.         return NULL;
  209.     else
  210.     {
  211.         Organizm* org = NULL;
  212.         switch (znak) {
  213.         case 'C':
  214.             org = new Czlowiek(*this, x, y);
  215.             break;
  216.         case 'W':
  217.             org = new Wilk(*this, x, y);
  218.             break;
  219.         case 'O':
  220.             org = new Owca(*this, x, y);
  221.             break;
  222.         case 'L':
  223.             org = new Lis(*this, x, y);
  224.             break;
  225.         case 'Z':
  226.             org = new Zolw(*this, x, y);
  227.             break;
  228.         case 'A':
  229.             org = new Antylopa(*this, x, y);
  230.             break;
  231.         case 'Y':
  232.             org = new CyberOwca(*this, x, y);
  233.             break;
  234.         case't':
  235.             org = new Trawa(*this, x, y);
  236.             break;
  237.         case 'm':
  238.             org = new Mlecz(*this, x, y);
  239.             break;
  240.         case 'g':
  241.             org = new Guarana(*this, x, y);
  242.             break;
  243.         case 'w':
  244.             org = new WilczeJagody(*this, x, y);
  245.             break;
  246.         case 'b':
  247.             org = new BarszczSosnowskiego(*this, x, y);
  248.             break;
  249.         default:
  250.             throw "błąd";
  251.  
  252.         }
  253.        
  254.         this->Organizmy[y][x] = org;
  255.         return org;
  256.     }
  257. }
  258.  
  259.  
  260.  
  261. void Swiat::rysujSwiat() {
  262.     system("cls");
  263.     //std::cout << "Human power: " << this->czlowiek->getPower() << "\n";
  264.     for (int i = 0; i <= this->rozmiarSwiata.y + 1+(this->rozmiarSwiata.x- this->rozmiarSwiata.y); i++)
  265.         cout << "#";
  266.     cout << "\n#";
  267.     for (int y = 0; y < this->rozmiarSwiata.y; y++)
  268.     {
  269.         for (int x = 0; x < /*this->*/rozmiarSwiata.x; x++)
  270.         {
  271.             if (this->Organizmy[y][x] == NULL)
  272.             {
  273.                 cout << " ";
  274.             }
  275.             else
  276.             {
  277.                 cout << this->Organizmy[y][x]->getZnak();
  278.             }
  279.         }
  280.         std::cout << "#\n#";
  281.     }
  282.     for (int i = 0; i < this->rozmiarSwiata.y + 1+(this->rozmiarSwiata.x - this->rozmiarSwiata.y); i++)
  283.         cout << "#";
  284.     //this->komunikaty.wypiszKomunikat();
  285.  
  286. }
  287. void Swiat::usunOrganizm(Organizm& org) {
  288.  
  289. }
  290.  
  291. bool Swiat::czyJestPuste(int x, int y) {
  292.     if (!this->Pole(x, y))
  293.         return false;
  294.     if (this->Organizmy[y][x] == NULL)
  295.         return true;
  296.     return false;
  297. }
  298.  
  299. Swiat::~Swiat()
  300. {
  301.     delete[] Organizmy;
  302. }
RAW Paste Data
Top