Facebook
From Subtle Marmoset, 7 Years ago, written in C++.
Embed
Download Paste or View Raw
Hits: 238
  1. #include <iostream>
  2. #include <fstream>
  3. #include <string>
  4.  
  5. using namespace std;
  6.  
  7. int main()
  8. {
  9.  
  10.         //int kolumny;
  11.         //int wiersze;
  12.        
  13.         /*
  14.         cout << "podaj ilosc kolumn: " << endl;
  15.         cin >> kolumny;
  16.         cout << "podaj ilosc wierszy: " << endl;
  17.         cin >> wiersze;
  18.  
  19.         string ** plansza = new string *[wiersze];
  20.         for (int i = 0; i < wiersze; i++)
  21.         {
  22.                 plansza[i] = new string[kolumny];
  23.         }
  24.         */
  25.  
  26.         //ilość wierszy: 12
  27.         //ilość kolumn: 20
  28.         /*
  29.         ....................
  30.         ....................
  31.         ....................
  32.         ....................
  33.         .......X.XX.........
  34.         .......XXX..........
  35.         ........X...........
  36.         ....................
  37.         ....................
  38.         ....................
  39.         ....................
  40.         ....................
  41.         */
  42.         string plansza[12];
  43.         fstream plik;
  44.         plik.open("gra.txt");
  45.         for (int i = 0; i < 12; i++)
  46.         {
  47.                 plik >> plansza[i];
  48.                 //cout << plansza[i] << endl;
  49.         }
  50.         string pokolenieprzed[12];
  51.         string pokoleniepo[12][20];
  52.         for (int i = 0; i < 12; i++)
  53.         {
  54.                 pokolenieprzed[i]=plansza[i];
  55.                 //cout << pokolenieprzed[i] << endl;
  56.         }
  57.  
  58.         for (int i = 0; i < 37; i++)
  59.         {
  60.                 cout << "Pokolenie " << i + 1 << ":" << endl;
  61.                 for (int j = 0; j < 12; j++) cout << pokolenieprzed[j]<<endl;
  62.                 for (int j = 0; j < 12; j++)
  63.                 {
  64.                         for (int k = 0; k < 20; k++)
  65.                         {
  66.                                         int licznikzyw = 0;
  67.                                         //PIONOWA
  68.                                         //góra
  69.                                         if (j - 1 < 0) { if (pokolenieprzed[11][k] == 'X') licznikzyw++; }
  70.                                         else { if (pokolenieprzed[j - 1][k] == 'X') licznikzyw++; }
  71.                                         //cout << licznikzyw << " ";
  72.                                         //dół
  73.                                         if (j + 1 == 12) { if (pokolenieprzed[0][k] == 'X') licznikzyw++; }
  74.                                         else { if (pokolenieprzed[j + 1][k] == 'X') licznikzyw++; }
  75.                                         //cout << licznikzyw << " ";
  76.                                         //POZIOMA
  77.                                         //lewa
  78.                                         if (k - 1 < 0) { if (pokolenieprzed[j][19] == 'X') licznikzyw++; }
  79.                                         else { if (pokolenieprzed[j][k - 1] == 'X') licznikzyw++; }
  80.                                         //cout << licznikzyw << " ";
  81.                                         //prawa
  82.                                         if (k + 1 == 20) { if (pokolenieprzed[j][0] == 'X') licznikzyw++; }
  83.                                         else { if (pokolenieprzed[j][k + 1] == 'X') licznikzyw++; }
  84.                                         //cout << licznikzyw << " ";
  85.                                         //SKOSY
  86.                                         //góra-lewa
  87.                                         if (j - 1 < 0 && k - 1 < 0) { if (pokolenieprzed[11][19] == 'X') licznikzyw++; }
  88.                                         if (j - 1 < 0 && k - 1 >= 0) { if (pokolenieprzed[11][k-1] == 'X') licznikzyw++; }
  89.                                         if (j - 1 >= 0 && k - 1 < 0) { if (pokolenieprzed[j-1][19] == 'X') licznikzyw++; }
  90.                                         if (j - 1 >= 0 && k - 1 >= 0) { if (pokolenieprzed[j-1][k-1] == 'X') licznikzyw++; }
  91.                                         //cout << licznikzyw << " ";
  92.                                         //góra-prawa
  93.                                         if (j - 1 < 0 && k + 1 == 20) { if (pokolenieprzed[11][0] == 'X') licznikzyw++; }
  94.                                         if (j - 1 < 0 && k + 1 < 20) { if (pokolenieprzed[11][k + 1] == 'X') licznikzyw++; }
  95.                                         if (j - 1 >= 0 && k + 1 == 20) { if (pokolenieprzed[j - 1][0] == 'X') licznikzyw++; }
  96.                                         if (j - 1 >= 0 && k + 1 < 20) { if (pokolenieprzed[j - 1][k + 1] == 'X') licznikzyw++; }
  97.                                         //cout << licznikzyw << " ";
  98.                                         //dół-lewa
  99.                                         if (j + 1 == 12 && k - 1 < 0) { if (pokolenieprzed[0][19] == 'X') licznikzyw++; }
  100.                                         if (j + 1 == 12 && k - 1 >= 0) { if (pokolenieprzed[0][k - 1] == 'X') licznikzyw++; }
  101.                                         if (j + 1 < 12 && k - 1 < 0) { if (pokolenieprzed[j + 1][19] == 'X') licznikzyw++; }
  102.                                         if (j + 1 < 12 && k - 1 >= 0) { if (pokolenieprzed[j + 1][k - 1] == 'X') licznikzyw++; }
  103.                                         //cout << licznikzyw << " ";
  104.                                         //dół-prawa
  105.                                         if (j + 1 == 12 && k + 1 == 20) { if (pokolenieprzed[0][0] == 'X') licznikzyw++; }
  106.                                         if (j + 1 == 12 && k + 1 < 20) { if (pokolenieprzed[0][k + 1] == 'X') licznikzyw++; }
  107.                                         if (j + 1 < 12 && k + 1 == 20) { if (pokolenieprzed[j + 1][0] == 'X') licznikzyw++; }
  108.                                         if (j + 1 < 12 && k + 1 < 20) { if (pokolenieprzed[j + 1][k + 1] == 'X') licznikzyw++; }
  109.                                         //cout << licznikzyw << " ";
  110.  
  111.                                         //PODSUMOWANIE
  112.                                         if (licznikzyw == 3) pokoleniepo[j][k] = 'X';
  113.                                         if (licznikzyw != 3 && licznikzyw != 2) pokoleniepo[j][k] = '.';
  114.                         }
  115.                 }
  116.                 for (int j = 0; j < 12; j++)
  117.                 {
  118.                         string linijka;
  119.                         for (int k = 0; k < 20; k++)
  120.                         {
  121.                                 linijka = linijka + pokoleniepo[j][k];
  122.                         }
  123.                         pokolenieprzed[j] = linijka;
  124.                 }
  125.         }
  126.  
  127.         system("PAUSE");
  128.         return 0;
  129. }